应用程序何时关闭但有些未完成的任务是否有任何框架支持?
默认情况下,任务在后台线程的上下文中运行。有时候让任务完成就可以了:
Task.Factory.StartNew(() =>
{
Thread.CurrentThread.IsBackground = false;
Thread.Sleep(20000);
Thread.CurrentThread.IsBackground = true;
});
但是如果任务具有需要完成的延续,则这不起作用。特别是如果某些任务将在UI线程下运行
可以获得所有“最终”任务,并使用WhenAll()
推迟应用程序退出
但是,当使用async / await时,我不知道如何做同样的事情。
所以我想知道是否有任何支持这种情况。是否有任何保证框架给出或执行它们的方法?
我现在看到的唯一方法是将标志设置为关键任务尚未完成的标志。
答案 0 :(得分:0)
顺便说一句,你不应该在线程池线程上设置IsBackground
。
对于async
方法,请确保您的方法返回Task
而不是void
,然后您可以await
使用WhenAll
Task
。您可以让事件处理程序捕获顶级await
而不是{{1}}。