使用async Task而不是async void来定义异步方法,因为async void无法使用try catch块捕获异常,并且也没有返回类型,会导致难以处理错误。如果异步方法不需要等待在调用方完成,可以使用Task.Run包装异步方法。
示例代码:
// 不推荐,使用了不支持的fire-and-forget async-void方法 async void AsyncMethod() { await DoSomethingAsync(); await DoAnotherThingAsync(); }
// 推荐,使用async Task定义异步方法 async Task DoAsyncMethod() { try { await DoSomethingAsync(); await DoAnotherThingAsync(); } catch (Exception ex) { // 处理异常 } }
// 如果不需要等待异步方法完成,可以使用Task.Run包装 void CallAsyncMethod() { Task.Run(() => AsyncMethod()); }