async
方法的返回值:Task
还是void
?在使用C#进行异步编程时,async
方法可以返回Task
或void
。这个选择至关重要,因为它决定了方法的行为及其与调用代码的交互方式。
Task
通常情况下,当您希望向调用方公开异步操作的进度或结果时,应该返回Task
。这允许调用方等待任务并在其完成后继续执行。返回Task
还可以使用异常处理和异步模式,例如async-foreach
,其中可以监控多个任务的进度。
void
唯一适合从async
方法返回void
的情况是当您明确需要void
返回类型时,例如在事件处理程序或UI回调中。在这些情况下,调用方不应该能够等待该方法,并且async
和await
关键字不是必需的。
async void
方法标记为async void
的方法具有特殊的语义,应谨慎使用。它们表示顶级异步操作,并且与返回任务的方法相比,具有不同的异常处理规则。顶级void
方法中的异常被视为未处理的异常,可能导致意外行为。
例如,考虑以下代码:
<code class="language-C#">public static async void AsyncMethod2(int num) { await Task.Factory.StartNew(() => Thread.Sleep(num)); }</code>
在这种情况下,使用async void
是不必要的,并且可能存在问题,因为:
最好使用async Task
方法和await
关键字来确保正确的异常处理,并保持跟踪和管理异步操作的能力。
以上是c#中的异步/等待:何时返回任务与void?的详细内容。更多信息请关注PHP中文网其他相关文章!