[英]Parallel Task Wait from UI without blocking
我使用並行任務庫在后台運行異步任務。 有時,當UI線程未阻塞時,我必須等待該后台任務的完成委托。
所以:
在嘗試調用Wait方法之后,我在UI線程(2)中啟動了后台任務,這導致死鎖...
我需要一個解決方案來等待指定的后台任務,而又不會阻塞UI線程。 .NET Framework是4,所以我不能使用async
和await
更新:
在用戶界面線程中:
Task task = Task.Factory.StartNew<T>(() => BackgroundTask());
task.ContinueWith(task => CompletedTask(((Task<T>)task).Result); // I want to prevent later tasks to start before this task is finished
task.Wait(); // this will block the ui...
任何建議表示贊賞。
您可以使用ContinueWith
將延續附加到任務,並在任務完成時運行一些代碼。 在幕后, await
實際上是在做同樣的事情。
當所有任務集合都完成后,可以使用Task.Factory.ContinueWhenAll
運行延續。
您可以從UI線程中使用TaskScheduler.FromCurrentSynchronizationContext()
獲得能夠在UI線程中調度任務的任務調度程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.