Heim >Backend-Entwicklung >C++ >Wann sollte ich eine Aufgabe gegen Leere in asynchronen/warteten Methoden zurückgeben?
Task
und void
in asynchronen Methoden
Task
Die Entscheidung, ob ein void
oder async
aus einer
Task
Rückgabe eines :
Task
Rückgabe eines
Task
Wenn der asynchrone Betrieb einen Wert erzeugt, kann der Anrufer auf die Fertigstellung warten und auf das Ergebnis zugreifen. Task
Das Objekt IsCompleted
bietet Eigenschaften und Methoden, um den Status des Betriebs zu verfolgen (z. B. IsFaulted
, async
in die Task
-Methode geworfene Ausnahmen werden von der try-catch
erfasst und können vom Anrufer mithilfe von
void
Rückgabe :
void
Rückgabe
async void
Methoden: Vorsichtsmaßnahmen:
async void
async void
Ausnahmen in UnobservedTaskException
Methoden werden nicht automatisch an den Anrufer ausgegeben. Wenn sie nicht behandelt werden, können sie zu async void
Ereignissen führen, was möglicherweise die Anwendung leise stürzt. Dies ist ein Hauptgrund, um Illustratives Beispiel:
<code class="language-csharp">public static async Task<int> AsyncMethod1(int num) { await Task.Delay(num); return num * 2; } public static async void AsyncMethod2(int num) { try { await Task.Delay(num); } catch (Exception ex) { // Handle exceptions here. Crucial for async void! Console.WriteLine($"Exception in AsyncMethod2: {ex.Message}"); } }</code>
AsyncMethod1
Task<int>
(Rückgabe AsyncMethod2
) wird für eine bessere Fehlerbehandlung und die Fähigkeit, auf das Ergebnis zu warten, bevorzugt. void
(Rückgabe
Schlussfolgerung:
Task
in den meisten async
-Methoden bevorzugen. Verwenden Sie nur async void
für bestimmte Szenarien wie Ereignishandler, in denen ein Rückgaberwert nicht benötigt wird und innerhalb der Methode eine sorgfältige Ausnahmeregelung implementiert wird. Wenn Sie diese Richtlinien ignorieren, können Sie schwer zu kaum zu kräusliche Probleme in Ihrem asynchronen Code haben. Weitere detailliertere Erklärungen erhalten Sie externe Ressourcen.
Das obige ist der detaillierte Inhalt vonWann sollte ich eine Aufgabe gegen Leere in asynchronen/warteten Methoden zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!