D J*_*D J 0 c# multithreading asynchronous async-await c#-5.0
我是async/await的新手.但我创建了POC,但我仍然感到困惑.
方法的结果
public async void WriteLineFunc(string str)
{
await Task.Factory.StartNew(() => WaitFor2Secs());
//WaitFor2Secs();
Console.WriteLine(str);
}
Run Code Online (Sandbox Code Playgroud)
和
public async void WriteLineFunc(string str)
{
//await Task.Factory.StartNew(() => WaitFor2Secs());
WaitFor2Secs();
Console.WriteLine(str);
}
Run Code Online (Sandbox Code Playgroud)
是一样的.制作等待方法的重点是什么?只是在其他线程上运行一个函数并等待它完成?
当方法使用时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);
}
Run Code Online (Sandbox Code Playgroud)
WriteLineFunc将同步阻止正在运行的线程2秒,然后写出字符串.WriteLineFuncAsync将立即Task向其来电者返回不完整的内容; 两秒钟后,它会写出字符串然后完成Task.
对于客户端应用程序,主要好处是响应性(GUI线程未被阻止).对于服务器端应用程序,主要的好处是可伸缩性(您可以获得比线程更多的响应).
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |