2016-06-08 55 views
0

在過去的幾天裏,我花了一段時間爲Async/Await數據庫轉換一個工作的前端應用程序,但我擔心自己已​​經在一個角落裏工作了。對於這一切而言,我有一個非常簡單的問題。如何在窗口關閉之前檢測未完成的等待進程?

當計算機暫停時,「等待」過程會發生什麼?另外,是否可以以通用方式檢測「等待」進程,以便在窗口關閉之前可以警告用戶「進程未完成」? (該應用程序有許多創建和更新過程來管理數據庫後端)。

TIA

+0

感謝@ F.Koenig,發現討論在http://stackoverflow.com/questions/5562969/what-happens-when-a-task-is-running-and-its-window-is-closed是特別有用。 –

回答

1

而不是

await DoAsync(); 

你可以做類似

task = DoAsync(); 
await task; 

和關閉應用程序時,你可能想看看別的地方

if(task.Status == TaskStatus.Running) 
    ... 

日對於長時間運行的操作是有意義的。不過,請看一下Task Class。

+0

無論如何隱式檢測是否有任何任務正在運行? (每個Windows都有許多異步操作)。謝謝。 –

+0

默認情況下,沒有。一個自定義的TaskScheduler最終可以提供這樣的功能,但我相信有更容易和更優雅的方式來解決您的問題。我會考慮一種設計,將長時間運行的操作封裝在一起,讓你對自己的狀態做出反應。 Task-class本身還提供了各種方法來處理多個任務實例,如Task.WaitAll,Task.WaitAny等等...... –

相關問題