簡體   English   中英

為什么我應該使用等待?

[英]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.

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