gpt4 book ai didi

c# - 等待 ThreadPool 上的所有任务完成

转载 作者:行者123 更新时间:2023-11-30 21:53:06 26 4
gpt4 key购买 nike

这可能有一个非常简单的答案,已经张贴在这里某处,但也有很多关于线程的旧误导信息。

我的问题是:如何防止我的控制台在后台工作完成之前终止?由于 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!");
});
}
}

最佳答案

返回任务以便您可以等待它。

private static void Main(string[] args)
{
var task = DoBackgroundWork();
System.Console.WriteLine("Doing something else during background work");

// Wait for all created Tasks to complete before terminating
task.Wait();
}

private static Task DoBackgroundWork()
{
var task = Task.Run(() =>
{
System.Console.WriteLine("Starting background work");
Thread.Sleep(1000);
System.Console.WriteLine("Background work finished!");
});

return task;
}

关于c# - 等待 ThreadPool 上的所有任务完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34197814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com