参考文章:《C# 一篇文章就理解async和await》
https://mp.weixin.qq.com/s/53EgxZHzEZJvbRmhaXA8eg
同步还是异步,区别如下:
-
你使用 await 去调用一个异步方法,其执行过程就是同步。
-
你获取异步方法返回的 Task,就是异步。
代码示例:
/// <summary>
/// 可异步可同步
/// </summary>
/// <returns></returns>
public static async Task<int> TestAsync()
{
Task<int> task = new Task<int>(() =>
{
return 666;
});
task.Start();
return await task;
}
// await 使得任务同步
public async void T1()
{
// 使用 await 关键字,代表等待执行完成,同步
int time = await TestAsync();
Console.WriteLine(time);
}
// 直接获得返回的 Task,实现异步
public void T2()
{
// 获取 Task 任务对象,后面的逻辑过程可以弄成异步
Task<int> task = TestAsync();
// 任务是异步在执行,我不理会他
// 这里可以处理其它事情,处理完毕后,再获取执行结果
// 这就是异步
Console.WriteLine(task.Result);
}