await
提供的代码演示了在不使用MyAsyncMethod()
的情况下调用异步方法await
。这种做法会生成警告并可能消除异常。 本文提出了有效处理异常同时忽略异步操作结果的解决方案。
方法一:ContinueWith
异常处理
此方法使用 ContinueWith
方法异步管理来自 MyAsyncMethod()
:
<code class="language-csharp">MyAsyncMethod() .ContinueWith(t => Console.WriteLine(t.Exception), TaskContinuationOptions.OnlyOnFaulted);</code>
此代码片段将延续任务附加到 MyAsyncMethod()
。 如果 MyAsyncMethod()
引发异常,则会执行延续任务,并在单独的线程上将异常详细信息写入控制台。
方法二:await
和try-catch
进行精准异常管理
或者,利用 await
和 try-catch
块提供更细粒度的异常处理:
<code class="language-csharp">try { await MyAsyncMethod().ConfigureAwait(false); } catch (Exception ex) { Trace.WriteLine(ex); }</code>
此方法通过 try-catch
提供有针对性的异常处理。 ConfigureAwait(false)
防止异常被封送回原始上下文,从而允许当前线程继续执行。
这两种方法都可以确保在调用异步方法而不等待其结果时的异常安全。选择最适合您的特定需求和异常处理要求的方法。
以上是如何在不使用'await”的情况下安全地调用 C# 中的异步方法并仍然处理异常?的详细内容。更多信息请关注PHP中文网其他相关文章!