当应用程序即将关闭但有一些未完成的任务时,是否有任何框架支持?
任务默认在后台线程的上下文中运行。有时只需让任务完成就可以了:
Task.Factory.StartNew(() =>
{
Thread.CurrentThread.IsBackground = false;
Thread.Sleep(20000);
Thread.CurrentThread.IsBackground = true;
});
但是,如果任务有需要完成的延续,这不起作用。特别是如果某些任务将在 UI 线程下运行。
可以获取所有“最终”任务并使用 推迟应用程序退出WhenAll()
。
然而,当使用 async/await 时,我不知道如何做同样的事情。
所以我想知道这种情况是否有任何支持。是否有任何框架提供的保证或强制执行它们的方法?
我现在看到的唯一方法是将标志设置为关键任务尚未完成的标志。