簡體   English   中英

等待任務在關閉時完成而不會死鎖

[英]Wait for Tasks to complete at shutdown without deadlocking

在任何給定時間,我的WPF應用程序都會在后台線程/同步上下文上運行一堆異步Task 在關閉時,我需要設置一個CancellationToken ,然后等待這些任務正常完成,然后才能開始拆除它們所依賴的本機庫。 但是某些任務具有(必須)在主線程上運行的延續,因此從同一線程調用Task.WaitAll(_myTasks)將導致死鎖。 我想做的是這樣的:

while(!AreAllTasksComplete(_myTasks))
   LetContinuationsThatAreWaitingForThisContextRun();
TearDownTheNativeLibraries();

但是,當然不存在LetContinuationsThatAreWaitingForThisContextRun()。 有什么辦法可以做我想做的事嗎? 我需要一種完全不同的方法嗎?

你可以做

await Task.WhenAll(_myTasks);
TearDownTheNativeLibraries();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM