本篇文章是对C#异步编程一个耗时测试记录,为了强化记忆而写。以前弄明白了,现在又遇到,结果又不会用了。 开始代码 写两个方法 方法一 延迟5秒
static public async Task T3()
{
Console.WriteLine("T3开始"+DateTime.Now);
await Task.Delay(5000);
Console.WriteLine("T3结束" + DateTime.Now);
}
方法二 延迟2秒
static public async Task<int> T6()
{
Console.WriteLine("T6开始" + DateTime.Now);
await Task.Delay(2000);
Console.WriteLine("=======测试6666==========");
Console.WriteLine("T6结束" + DateTime.Now);
return 2;
}
测试1
首先测试 await 放到每个方法前,这是同步方法
public static void myTestAA()
{
Console.WriteLine(DateTime.Now);
Task.Run(async () =>
{
await T3();//5;
await T6();//2 总共7秒
});
Task.Delay(10000);//等两个方法运行完成
Console.WriteLine(DateTime.Now);
}
测试结果截图
两个方法运行完毕,耗时是7秒钟
测试2
每个方法前定义一个变量接受,然后统一
把 await 放到每个变量前,这是异步方法,代码如下
public static void myTestAA()
{
Console.WriteLine(DateTime.Now);
Task.Run(async () =>
{
var t1 = T3();
var t2 = T6();
await t1;
await t2;//总共5秒
});
Task.Delay(10000);//等两个方法运行完成
Console.WriteLine(DateTime.Now);
}
测试结果截图
两个方法运行完毕,耗时是5秒钟
总结
await位置不同,可以使方法变成不同类型,即同步或异步。同步耗时更多,异步耗时更少。使用过程中需要注意await的位置。不要把想异步执行的结果写成了同步。