我有许多在任务调度程序上运行的 win 服务和控制台应用程序, 由于 netstandard 2.0 和 core .net 将所有 I/O 调用转为异步,我的所有代码都编写为异步/等待模型,当我没有任何可以卡住的 UI 时,使用这种模式有什么好处吗?
最佳答案
是的,有一个优势。
假设您的服务中有一个 I/O 操作需要 3 秒才能从某个套接字获取数据。使用 Async/Await 模式可以让您在这 3 秒内完成其他 CPU 密集型工作,而不会阻塞线程。
一些基本的例子
var obj = new Demo();
var task1 = obj.WaitForIO(); //Imagine this as a database call that takes 5 seconds to finish
var task2 = obj.DoSomethingElse(); //Imagine this as some CPU bound work eg: some calculations
await Task.WhenAll(task1,task2);
public class Demo
{
public async Task WaitForIO()
{
await Task.Delay(5000);
Console.WriteLine("IO Done");
}
public async Task DoSomethingElse()
{
for(var i=1;i<10;i++)
{
Console.WriteLine(i);
await Task.Delay(1000);
}
}
}
输出:
1
2
3
4
5
IO Done
6
7
8
9
关于c# - 在 win 服务中使用 async/await 有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55860647/