Ich habe eine async
-Methode, die keine Daten zurückgibt:
public async Task MyAsyncMethod()
{
// Führe einige Aufgaben asynchron aus, gebe keine Daten zurück
}
Ich rufe dies von einer anderen Methode aus auf, die einige Daten zurückgibt:
public string GetStringData()
{
MyAsyncMethod(); // Dies erzeugt eine Warnung und unterdrückt Ausnahmen
return "Hallo Welt";
}
Wenn MyAsyncMethod()
aufgerufen wird, ohne darauf zu warten, wird in Visual Studio eine "Da dieser Aufruf nicht abgewartet wird, wird die aktuelle Methode weiterhin ausgeführt, bevor der Aufruf abgeschlossen ist"-Warnung angezeigt. Auf der Seite für diese Warnung heißt es:
Sie sollten die Warnung nur unterdrücken, wenn Sie sicher sind, dass Sie nicht auf das Abschließen des asynchronen Aufrufs warten möchten und dass die aufgerufene Methode keine Ausnahmen auslöst.
Ich bin mir sicher, dass ich nicht auf das Abschließen des Aufrufs warten möchte; Ich brauche es nicht oder habe keine Zeit dafür. Aber der Aufruf könnte Ausnahmen auslösen.
I ch bin ein paar Mal auf dieses Problem gestoßen, und ich bin sicher, dass es ein häufiges Problem ist, das eine gemeinsame Lösung haben muss.
Wie rufe ich sicher eine async-Methode auf, ohne auf das Ergebnis zu warten?
Aktualisierung:
Für Personen, die vorschlagen, dass ich einfach auf das Ergebnis warten soll, handelt es sich hier um Code, der auf eine Webanforderung auf unserem Webservice (ASP.NET Web-API) reagiert. Das Warten in einem UI-Kontext hält den UI-Thread frei, aber das Warten in einem Webanforderungsaufruf würde auf das Beenden des Tasks warten, bevor auf die Anforderung geantwortet wird, was die Antwortzeiten ohne Grund erhöht.