我希望我的Task
在我執行其他操作之前完成。如果我使用異步等待任務<T>沒有異步/等待
Task.WaitAll(task);
它肯定會阻止我的UI線程。不使用async/await
(我正在使用.NET v4.0),如何完成異步等待Task
的最佳方式是什麼?
我希望我的Task
在我執行其他操作之前完成。如果我使用異步等待任務<T>沒有異步/等待
Task.WaitAll(task);
它肯定會阻止我的UI線程。不使用async/await
(我正在使用.NET v4.0),如何完成異步等待Task
的最佳方式是什麼?
當您將Microsoft.Bcl.Async NuGet package
添加到項目中時,您也可以在.NET 4.0中使用async/await
。除此之外,你沒有多少選擇 - 要麼使用異步調用,要麼使用你提到的方法阻塞你的線程。
但是,在使用異步方法時,您不會綁定到await
。您也可以使用回調:
task.ContinueWith(r => {
/* code */
});
如果'Microsoft.Bcl.Async'不是一個選項,那麼'Task.Factory.ContinueWhenAll'是'Task.WaitAll'的好替代品。 –
異步等待的概念正在傷害我的大腦... –
爲什麼不直接同步運行? – doctorlove
您只能撰寫延續('ContinueWith')。這就是說,你*可以*使用異步&等待和目標.NET 4.你必須使用VS2012,與[異步目標包](https://www.nuget.org/packages/Microsoft.Bcl.Async) 。 –