C# 返回Task或者Task<T>的方法中如果没有异步方法,就没必要使用async修饰
接口实现不受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"); }); }

浙公网安备 33010602011771号