So rufen Sie eine asynchrone Methode in C# sicher und ohne Warten aufC#

Ein Treffpunkt für C#-Programmierer
Guest
 So rufen Sie eine asynchrone Methode in C# sicher und ohne Warten auf

Post by Guest »

Ich habe eine asynchrone-Methode, die keine Daten zurückgibt:

Code: Select all

public async Task MyAsyncMethod()
{
// do some stuff async, don't return any data
}
Ich rufe dies von einer anderen Methode aus auf, die einige Daten zurückgibt:

Code: Select all

public string GetStringData()
{
MyAsyncMethod(); // this generates a warning and swallows exceptions
return "hello world";
}
Der Aufruf von MyAsyncMethod() ohne darauf zu warten führt in Visual Studio zu einer Warnung „Da dieser Aufruf nicht erwartet wird, wird die aktuelle Methode weiter ausgeführt, bevor der Aufruf abgeschlossen ist“. Auf der Seite für diese Warnung heißt es:

Sie sollten die Unterdrückung der Warnung nur in Betracht ziehen, wenn Sie sicher sind, dass Sie nicht auf das Asynchrone warten möchten Aufruf zur Vervollständigung und dass die aufgerufene Methode keine Ausnahmen auslöst.

Ich bin mir sicher, dass ich das nicht möchte warten, bis der Anruf abgeschlossen ist; Ich muss oder habe keine Zeit dazu. Aber der Aufruf könnte Ausnahmen auslösen.
Ich bin ein paar Mal auf dieses Problem gestoßen und bin mir sicher, dass es häufig vorkommt Problem, für das es eine gemeinsame Lösung geben muss.
Wie rufe ich sicher eine asynchrone Methode auf, ohne auf das Ergebnis zu warten?
Update:
Für Leute, die vorschlagen, ich warte einfach darauf Ergebnis: Dies ist Code, der auf eine Webanforderung an unseren Webdienst (ASP.NET-Web-API) antwortet. Das Warten in einem UI-Kontext hält den UI-Thread frei, aber das Warten in einem Web-Anfrageaufruf wartet auf den Abschluss der Aufgabe, bevor auf die Anfrage geantwortet wird, wodurch sich die Antwortzeiten ohne Grund erhöhen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post