首頁 >後端開發 >C++ >如何在不使用'await”的情況下安全地調用 C# 中的非同步方法並仍然處理異常?

如何在不使用'await”的情況下安全地調用 C# 中的非同步方法並仍然處理異常?

Patricia Arquette
Patricia Arquette原創
2025-01-12 10:52:41696瀏覽

How Can I Safely Call Async Methods in C# Without Using `await` and Still Handle Exceptions?

在沒有 await

的情況下安全地呼叫非同步 C# 方法

提供的程式碼示範了在不使用MyAsyncMethod()的情況下呼叫非同步方法await。這種做法會產生警告並可能消除異常。 本文提出了有效處理異常同時忽略非同步操作結果的解決方案。

方法一:ContinueWith異常處理

此方法使用 ContinueWith 方法非同步管理來自 MyAsyncMethod():

的異常
<code class="language-csharp">MyAsyncMethod()
    .ContinueWith(t => Console.WriteLine(t.Exception),
        TaskContinuationOptions.OnlyOnFaulted);</code>

此程式碼片段將延續任務附加到 MyAsyncMethod()。 如果 MyAsyncMethod() 引發異常,則會執行延續任務,並在單獨的執行緒上將異常詳細資訊寫入控制台。

方法二:awaittry-catch進行精準異常管理

或者,利用 awaittry-catch 區塊提供更細粒度的異常處理:

<code class="language-csharp">try
{
    await MyAsyncMethod().ConfigureAwait(false);
}
catch (Exception ex)
{
    Trace.WriteLine(ex);
}</code>

此方法透過 try-catch 提供有針對性的異常處理。 ConfigureAwait(false) 防止異常被封送回原始上下文,從而允許當前執行緒繼續執行。

這兩種方法都可以確保在呼叫非同步方法而不等待其結果時的異常安全。選擇最適合您的特定需求和異常處理要求的方法。

以上是如何在不使用'await”的情況下安全地調用 C# 中的非同步方法並仍然處理異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn