Heim > Backend-Entwicklung > C++ > Wie kann man in der Hauptmethode von C# ordnungsgemäß auf asynchrone Methodenaufrufe warten?

Wie kann man in der Hauptmethode von C# ordnungsgemäß auf asynchrone Methodenaufrufe warten?

Linda Hamilton
Freigeben: 2025-01-03 20:07:39
Original
797 Leute haben es durchsucht

How to Properly Await Asynchronous Method Calls in C#'s Main Method?

Asynchrone Methoden in Main aufrufen

In C# ist es möglich, asynchrone Programmierung zu verwenden, um Vorgänge auf nicht blockierende Weise auszuführen. Asynchrone Methoden ermöglichen die gleichzeitige Ausführung einer Aufgabe mit anderem Code, wodurch der Thread für die Bearbeitung anderer Aufgaben frei wird. Wenn wir jedoch eine asynchrone Methode von der Main-Methode aufrufen, die selbst keine asynchrone Methode ist, müssen wir einige Anpassungen vornehmen, damit die Main-Methode auf den Abschluss des asynchronen Vorgangs warten kann.

Verwendung der asynchronen Main-Methode (C# 7.1 und neuer)

Ab C# 7.1 kann die Main-Methode so geändert werden, dass sie asynchron ist die direkte Verwendung des Wait-Operators. Dadurch kann die Main-Methode als Einstiegspunkt für asynchrone Vorgänge fungieren. Zum Beispiel:

static async Task Main(string[] args)
{
    test t = new test();
    await t.Go();
    Console.WriteLine("finished");
    Console.ReadKey();
}
Nach dem Login kopieren

Verwenden der blockierenden Wartemethode (frühere C#-Versionen)

Für frühere Versionen von C# kann die Main-Methode nicht als asynchron deklariert werden. Stattdessen kann der Wait-Operator nicht direkt verwendet werden. Wir müssen mithilfe der Wait-Methode manuell auf den Abschluss des asynchronen Vorgangs warten. Zum Beispiel:

static void Main(string[] args)
{
    test t = new test();
    t.Go().Wait();
    Console.WriteLine("finished");
    Console.ReadKey();
}
Nach dem Login kopieren

Deadlock vermeiden

Das in der Frage bereitgestellte Beispiel versucht, GetAwaiter.OnCompleted zu verwenden, um den Abschluss der Go-Aufgabe zu verarbeiten. Dies kann jedoch zu einem Deadlock führen, da versucht wird, eine synchrone Fortsetzung in einem bereits synchronisierten Kontext auszuführen. Indem wir die Main-Methode so ändern, dass sie asynchron ist, oder die Wait-Methode verwenden, wie oben erwähnt, vermeiden wir dieses Problem und ermöglichen den ordnungsgemäßen Abschluss des asynchronen Vorgangs.

Das obige ist der detaillierte Inhalt vonWie kann man in der Hauptmethode von C# ordnungsgemäß auf asynchrone Methodenaufrufe warten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage