async
方法的返回值:Task
还是void
?在使用C#进行异步编程时,async
方法可以返回Task
或void
。这个选择至关重要,因为它决定了方法的行为及其与调用代码的交互方式。
Task
通常情况下,当您希望向调用方公开异步操作的进度或结果时,应该返回Task
。这允许调用方等待任务并在其完成后继续执行。返回Task
还可以使用异常处理和异步模式,例如async-foreach
,其中可以监控多个任务的进度。
void
唯一适合从async
方法返回void
的情况是当您明确需要void
返回类型时,例如在事件处理程序或UI回调中。在这些情况下,调用方不应该能够等待该方法,并且async
和await
关键字不是必需的。
async void
方法标记为async void
的方法具有特殊的语义,应谨慎使用。它们表示顶级异步操作,并且与返回任务的方法相比,具有不同的异常处理规则。顶级void
方法中的异常被视为未处理的异常,可能导致意外行为。
例如,考虑以下代码:
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
在这种情况下,使用async void
是不必要的,并且可能存在问题,因为:
最好使用async Task
方法和await
关键字来确保正确的异常处理,并保持跟踪和管理异步操作的能力。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3