1
當應用程序要關閉時,是否有任何框架支持,但有一些未完成的任務?
如何不讓應用程序在任務運行時退出
任務默認在後臺線程的上下文中運行。有時,它的確定只是爲了讓任務完成:
Task.Factory.StartNew(() =>
{
Thread.CurrentThread.IsBackground = false;
Thread.Sleep(20000);
Thread.CurrentThread.IsBackground = true;
});
但是如果任務有需要completition延續這不起作用。特別是如果某些任務將在UI線程下運行。
可以通過WhenAll()
獲得所有「最終」任務並推遲應用程序退出。
但是我不知道如何使用async/await時也是這樣。
所以我想知道是否有這種情況下的任何支持。框架提供了什麼保證或者如何執行它們?
我現在看到的唯一方法是將標誌設置爲關鍵任務尚未完成的標誌。
你能說明將IsBackground設置爲false會出現什麼問題嗎? – 2013-03-27 12:11:57
這是一個線程池線程;它不屬於你。 – 2013-03-27 12:45:29
但是我的任務一直擁有它,直到完成。而且我只在那個時期設置了IsBackground = false。我錯過重要的事情嗎? – 2013-03-27 13:23:42