Heim >Backend-Entwicklung >C++ >Wie kann ich einen asynchronen Code in der Hauptmethode einer Konsolenanwendung ausführen?
Asynchrone Programmierung in Konsolen -Apps: Ein praktisches Handbuch
Ausführen von asynchronem Code in der Methode einer Konsolenanwendung ist aufgrund der Einschränkungen der Main
-Methode selbst sorgfältig berücksichtigt. In diesem Artikel werden wirksame Strategien zur Erreichung einer asynchronen Ausführung untersucht. Main
Methoden nicht unterstützt. Das moderne C# ermöglicht jedoch eine asynchrone Main
Methode, die Main
oder Task
. Task<T>
zurückgibt
<code class="language-csharp">class Program { static async Task Main(string[] args) { // Asynchronous operations here... } }</code>Obwohl es scheinbar einfach ist, kann sich dieser Ansatz ähnlich wie
verhalten und möglicherweise den Hauptfaden blockieren. Das genaue Verhalten bleibt nuanciert, da die C# -Sprachspezifikationsverfeinerungen fortlaufend sind. GetAwaiter().GetResult()
ist der Schlüssel: Wenn Sie auf eine unvollständige, wartbare Begegnung mit der await
-Methode sofort zurückkehren und die Ausführung wieder aufnehmen, sobald das erwartbare Abschluss abgeschlossen ist. Entscheidend, async
erfasst den aktuellen Kontext für diese Wiederaufnahme. await
-Methoden -Programmabschluss an das Betriebssystem. Main
(aus dem Nuget -Paket AsyncContext
) bieten diese Funktionalität. Nito.AsyncEx
<code class="language-csharp">using Nito.AsyncEx; class Program { static void Main(string[] args) { AsyncContext.Run(() => MainAsync(args)); } static async Task MainAsync(string[] args) { // Asynchronous operations here... } }</code>Alternativ können wir den Hauptfaden explizit blockieren, bis asynchrone Aufgaben abgeschlossen sind:
<code class="language-csharp">class Program { static void Main(string[] args) { MainAsync(args).GetAwaiter().GetResult(); } static async Task MainAsync(string[] args) { // Asynchronous operations here... } }</code>Verwendet
vermeidet das GetAwaiter().GetResult()
, dass AggregateException
oder Wait()
werfen kann. Dies sorgt für die Handhabung des saubereren Fehlers. Wählen Sie die Methode, die die Bedürfnisse und die Fehlerbehandlungsstrategie Ihres Projekts am besten entspricht. Result
Das obige ist der detaillierte Inhalt vonWie kann ich einen asynchronen Code in der Hauptmethode einer Konsolenanwendung ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!