1

当应用程序即将关闭但有一些未完成的任务时,是否有任何框架支持?

任务默认在后台线程的上下文中运行。有时只需让任务完成就可以了:

Task.Factory.StartNew(() =>
                          {
                              Thread.CurrentThread.IsBackground = false;
                              Thread.Sleep(20000);
                              Thread.CurrentThread.IsBackground = true;
                          });

但是,如果任务有需要完成的延续,这不起作用。特别是如果某些任务将在 UI 线程下运行。
可以获取所有“最终”任务并使用 推迟应用程序退出WhenAll()
然而,当使用 async/await 时,我不知道如何做同样的事情。

所以我想知道这种情况是否有任何支持。是否有任何框架提供的保证或强制执行它们的方法?

我现在看到的唯一方法是将标志设置为关键任务尚未完成的标志。

4

1 回答 1

0

顺便说一句,您不应该设置IsBackground线程池线程。

对于async方法,请确保您的方法正在返回Task而不是void,然后您可以await将它们全部使用WhenAll. 您可以让您的事件处理程序捕获顶级Tasks 而不是await它们。

于 2013-03-27T11:58:37.537 回答