










接口实现不受async关键字影响,即可以有它,也可以没它,所以如果方法中没有异步操作,完全没必要使用async修饰
public async Task Test() { await AAA(); await BBB(); } async Task<string> AAA() { await Task.CompletedTask; return Guid.NewGuid().ToString("N"); } /// <summary> /// 这样写更好 /// </summary> Task<string> BBB() { return Task.FromResult(Guid.NewGuid().ToString("N")); //return Task.CompletedTask; //没有返回值时这样写 }
甚至单独的异步任务,也可以直接返回,而不用async修饰,
public async Task TestAsync() { await AAA(); await BBB(); } /// <summary> /// 完全没有必要用async修饰,直接返回任务就行了 /// </summary> Task<string> AAA() { return Task.Run(async () => { await Task.Delay(3000); return Guid.NewGuid().ToString("N"); }); } /// <summary> /// 用async修饰后,里面必须要await,这样就多一个状态机 /// </summary> async Task<string> BBB() { return await Task.Run(async () => { await Task.Delay(3000); return Guid.NewGuid().ToString("N"); }); }
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。