我有這樣的方法:異步任務被凍結UI
private async Task DoSomething()
{
// long running work here.
}
當我這樣調用它阻止方法的UI:
Task t = DoSomething();
我必須做的這些之一使它非阻塞:
Task t = new Task(() => DoSomething());
t.Start();
// Or
Task t = Task.Factory.StartNew(() => DoSomething());
那麼什麼是異步的點/等待時,你可以使用任務,因爲他們在框架4和使用Task.Wait()
代替await
?
編輯: 我理解你的答案 - 但沒有真正解決我的最後一段。任何人都可以給我一個基於任務的多線程示例,其中異步/等待提高了程序的可讀性和/或流程?
「異步」的目的不是多線程。它用於異步編程。您可以*使用'Task.Run'執行多線程,但'async'也可以與其他異步操作(如I/O)一起使用。基於任務的異步模式非常強大,因爲它可以以同樣的方式處理任何異步操作(無論CPU限制,I/O限制還是其他)。 –