【发布时间】:2015-12-10 09:18:00
【问题描述】:
这可能有一个非常简单的答案,已经在某处发布,但也有很多关于线程的旧误导信息。
我的问题是:如何防止我的控制台在后台工作完成之前终止?由于Task 是在我的程序的业务层中创建的,所以当控制台终止时我无法访问它(不像这个简单的例子)。有什么方法可以等待在我的应用程序上下文中创建的所有任务?
public class Program
{
private static void Main(string[] args)
{
DoBackgroundWork();
System.Console.WriteLine("Doing something else during background work");
// Wait for all created Tasks to complete before terminating
???
}
private static void DoBackgroundWork()
{
var task = Task.Run(() =>
{
System.Console.WriteLine("Starting background work");
Thread.Sleep(10000);
System.Console.WriteLine("Background work finished!");
});
}
}
【问题讨论】:
-
如果您需要添加一个辅助类,并将所有任务添加到其中,您会怎么想?
-
您尝试过 ManualResetEvent 吗?
标签: c# .net multithreading asp.net-4.5