[英]why I should use await?
我是異步/等待新手。 但是我創建了POC,但我仍然感到困惑。
方法結果
public async void WriteLineFunc(string str)
{
await Task.Factory.StartNew(() => WaitFor2Secs());
//WaitFor2Secs();
Console.WriteLine(str);
}
和
public async void WriteLineFunc(string str)
{
//await Task.Factory.StartNew(() => WaitFor2Secs());
WaitFor2Secs();
Console.WriteLine(str);
}
是同樣的。 使方法處於等待狀態有什么意義? 只是要在其他線程上運行一個函數並等待其完成?
當方法使用await
,它可以在完成之前返回其調用方。
考慮以下示例:
public async Task WriteLineFuncAsync(string str)
{
await Task.Delay(2000);
Console.WriteLine(str);
}
public void WriteLineFunc(string str)
{
Thread.Sleep(2000);
Console.WriteLine(str);
}
WriteLineFunc
將同步阻塞正在運行的線程2秒鍾,然后寫出該字符串。 WriteLineFuncAsync
將立即將不完整的Task
返回給其調用者; 兩秒鍾后,它將寫出字符串,然后完成Task
。
對於客戶端應用程序,主要優點是響應能力 (GUI線程未阻塞)。 對於服務器端應用程序,主要好處是可伸縮性 (與線程相比,您可以得到更多的響應)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.