在過去的幾天裏,我花了一段時間爲Async/Await數據庫轉換一個工作的前端應用程序,但我擔心自己已經在一個角落裏工作了。對於這一切而言,我有一個非常簡單的問題。如何在窗口關閉之前檢測未完成的等待進程?
當計算機暫停時,「等待」過程會發生什麼?另外,是否可以以通用方式檢測「等待」進程,以便在窗口關閉之前可以警告用戶「進程未完成」? (該應用程序有許多創建和更新過程來管理數據庫後端)。
TIA
在過去的幾天裏,我花了一段時間爲Async/Await數據庫轉換一個工作的前端應用程序,但我擔心自己已經在一個角落裏工作了。對於這一切而言,我有一個非常簡單的問題。如何在窗口關閉之前檢測未完成的等待進程?
當計算機暫停時,「等待」過程會發生什麼?另外,是否可以以通用方式檢測「等待」進程,以便在窗口關閉之前可以警告用戶「進程未完成」? (該應用程序有許多創建和更新過程來管理數據庫後端)。
TIA
而不是
await DoAsync();
你可以做類似
task = DoAsync();
await task;
和關閉應用程序時,你可能想看看別的地方
if(task.Status == TaskStatus.Running)
...
日對於長時間運行的操作是有意義的。不過,請看一下Task Class。
無論如何隱式檢測是否有任何任務正在運行? (每個Windows都有許多異步操作)。謝謝。 –
默認情況下,沒有。一個自定義的TaskScheduler最終可以提供這樣的功能,但我相信有更容易和更優雅的方式來解決您的問題。我會考慮一種設計,將長時間運行的操作封裝在一起,讓你對自己的狀態做出反應。 Task-class本身還提供了各種方法來處理多個任務實例,如Task.WaitAll,Task.WaitAny等等...... –
感謝@ F.Koenig,發現討論在http://stackoverflow.com/questions/5562969/what-happens-when-a-task-is-running-and-its-window-is-closed是特別有用。 –