await
Der bereitgestellte Code demonstriert den Aufruf der asynchronen Methode MyAsyncMethod()
ohne Verwendung von await
. Diese Vorgehensweise generiert eine Warnung und unterdrückt möglicherweise Ausnahmen. In diesem Artikel werden Lösungen zur effektiven Behandlung von Ausnahmen vorgestellt, während das Ergebnis des asynchronen Vorgangs ignoriert wird.
Methode 1: ContinueWith
zur Ausnahmebehandlung
Dieser Ansatz verwendet die Methode ContinueWith
, um Ausnahmen von MyAsyncMethod()
:
<code class="language-csharp">MyAsyncMethod() .ContinueWith(t => Console.WriteLine(t.Exception), TaskContinuationOptions.OnlyOnFaulted);</code>
Dieses Code-Snippet fügt eine Fortsetzungsaufgabe an MyAsyncMethod()
an. Wenn MyAsyncMethod()
eine Ausnahme auslöst, wird die Fortsetzungsaufgabe ausgeführt und die Ausnahmedetails in einem separaten Thread in die Konsole geschrieben.
Methode 2: await
und try-catch
für präzises Ausnahmemanagement
Alternativ bietet die Verwendung von await
und eines try-catch
-Blocks eine detailliertere Ausnahmebehandlung:
<code class="language-csharp">try { await MyAsyncMethod().ConfigureAwait(false); } catch (Exception ex) { Trace.WriteLine(ex); }</code>
Diese Methode ermöglicht eine gezielte Ausnahmebehandlung über try-catch
. ConfigureAwait(false)
verhindert, dass die Ausnahme in den ursprünglichen Kontext zurückgemarshallt wird, sodass der aktuelle Thread seine Ausführung fortsetzen kann.
Beide Methoden gewährleisten Ausnahmesicherheit beim Aufruf asynchroner Methoden, ohne auf deren Ergebnisse zu warten. Wählen Sie den Ansatz, der Ihren spezifischen Anforderungen und Ausnahmebehandlungsanforderungen am besten entspricht.
Das obige ist der detaillierte Inhalt vonWie kann ich Async-Methoden in C# sicher aufrufen, ohne „await' zu verwenden und trotzdem Ausnahmen behandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!