Heim > Backend-Entwicklung > C++ > Wie kann ich einen asynchronen Code in der Hauptmethode einer C# -Konsole -Anwendung ausführen?

Wie kann ich einen asynchronen Code in der Hauptmethode einer C# -Konsole -Anwendung ausführen?

Barbara Streisand
Freigeben: 2025-02-01 17:11:09
Original
671 Leute haben es durchsucht

How Can I Run Asynchronous Code in a C# Console Application's Main Method?

Ausführen von asynchronem Code in der Hauptmethode von C#: Workarounds für die asynchrische Begrenzung

Der async -Modifikator wird in älteren Versionen von C#nicht direkt auf der Main -Methode unterstützt. In mehreren Techniken ermöglichen jedoch den Einstiegspunkt Ihrer Konsolenanwendung einen asynchronen Betrieb.

Moderner Ansatz: Async Main (Visual Studio 2017 Update 3 und später)

Die einfachste Lösung, wenn Ihre Entwicklungsumgebung sie unterstützt, ist es, Main als async zu deklarieren und ein Task:

zurückzugeben

1

2

3

4

5

6

7

class Program

{

    static async Task Main(string[] args)

    {

        // Your asynchronous code here...

    }

}

Nach dem Login kopieren

Verwenden Sie einen asynchronen Kontext (für ältere Visual Studio -Versionen)

für ältere Visual Studio -Versionen oder wenn Sie es vorziehen, eine async Main -Methode zu verwenden, nutzen Sie eine asynchrone Kontextbibliothek. AsyncContext Aus dem Nito.AsyncEx Nuget -Paket ist eine beliebte Wahl:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

using Nito.AsyncEx;

 

class Program

{

    static void Main(string[] args)

    {

        AsyncContext.Run(() => MainAsync(args));

    }

 

    static async void MainAsync(string[] args)

    {

        // Your asynchronous code here...

    }

}

Nach dem Login kopieren

Blockieren des Hauptfadens (weniger ideal)

Während funktional, blockiert der Hauptfaden direkt, bis asynchrone Operationen aufgrund potenzieller Probleme im Allgemeinen weniger bevorzugt sind. Dieser Ansatz verwendet GetAwaiter().GetResult():

1

2

3

4

5

6

7

8

9

10

11

12

class Program

{

    static void Main(string[] args)

    {

        MainAsync(args).GetAwaiter().GetResult();

    }

 

    static async Task MainAsync(string[] args)

    {

        // Your asynchronous code here...

    }

}

Nach dem Login kopieren

Wichtiger Hinweis: Die Verwendung GetAwaiter().GetResult() ist entscheidend. Vermeiden Sie Wait() oder greifen Sie direkt auf die Eigenschaft Result zu, da diese Ausnahmen maskieren und zu schwerer-zu-Debug-Problemen führen können. AggregateException Verbreitet die Ausnahmen ordnungsgemäß. GetAwaiter().GetResult()

Das obige ist der detaillierte Inhalt vonWie kann ich einen asynchronen Code in der Hauptmethode einer C# -Konsole -Anwendung ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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