Heim >Backend-Entwicklung >C++ >Wie rufe ich Async-Methoden ordnungsgemäß über die Hauptmethode in C# auf?

Wie rufe ich Async-Methoden ordnungsgemäß über die Hauptmethode in C# auf?

DDD
DDDOriginal
2024-12-29 15:41:13285Durchsuche

How Do I Properly Invoke Async Methods from the Main Method in C#?

Aufrufen von Async-Methoden in Main: Eine umfassende Anleitung

Im Bereich der asynchronen Programmierung kommt es nicht selten vor, dass wir auf Situationen stoßen, in denen dies erforderlich ist Rufen Sie eine asynchrone Methode direkt von der Main-Methode aus auf. Um die Vorteile der asynchronen Programmierung nutzen zu können, ist es wichtig zu verstehen, wie dies erreicht werden kann.

Asynchroner Methodenaufruf in Main

Beachten Sie den folgenden Codeausschnitt:

<br>öffentlicher Unterricht test<br>{</p>
<pre class="brush:php;toolbar:false">public async Task Go()
{
    await PrintAnswerToLife();
    Console.WriteLine("done");
}

public async Task PrintAnswerToLife()
{
    int answer = await GetAnswerToLife();
    Console.WriteLine(answer);
}

public async Task<int> GetAnswerToLife()
{
    await Task.Delay(5000);
    int answer = 21 * 2;
    return answer;
}

}

Mehrere Ansätze

Es gibt mehrere Ansätze zum Aufrufen von Async Methoden aus der Main-Methode:

1. Asynchrone Hauptmethode (C# 7.1 und neuer)

Für C# 7.1 und neuere Versionen kann die Hauptmethode als asynchron markiert werden. Dies ermöglicht die direkte Verwendung von asynchronen Methoden innerhalb der Main-Methode, wie im folgenden Beispiel zu sehen ist:

<br>static async Task Main(string[] args)<br>{</p> <pre class="brush:php;toolbar:false">test t = new test();
await t.Go();
Console.WriteLine("finished");
Console.ReadKey();

}

2. Rufen Sie die „Wait“-Methode auf

Für frühere Versionen von C# kann die Wait-Methode verwendet werden, um den Thread zu blockieren, bis die asynchrone Methode abgeschlossen ist. Dieser Ansatz wird unten demonstriert:

<br>static void Main(string[] args)<br>{</p>
<pre class="brush:php;toolbar:false">test t = new test();
t.Go().Wait();
Console.WriteLine("finished");
Console.ReadKey();

}

3. OnCompleted-Rückruf (Legacy-Ansatz)

In bestimmten Fällen müssen Sie möglicherweise einen OnCompleted-Rückruf verwenden, wie im ersten Codeausschnitt gezeigt. Dieser Ansatz kann jedoch zu Deadlocks führen und sollte nach Möglichkeit vermieden werden.

Optimaler Ansatz

Für C# 7.1 und neuer ist die Verwendung der asynchronen Main-Methode die bevorzugte Ansatz, da er den Code vereinfacht und die Notwendigkeit eines Callback-basierten Aufrufs überflüssig macht. Für frühere Versionen von C# kann die Wait-Methode verwendet werden, es ist jedoch wichtig, die möglichen Auswirkungen auf die Leistung zu beachten, die mit dem Blockieren des Threads verbunden sind.

Fazit

Aufrufen von asynchronen Methoden Die Hauptmethode kann durch verschiedene Techniken erreicht werden. Wenn Sie die verschiedenen Ansätze und ihre Auswirkungen verstehen, können Sie die optimale Lösung basierend auf Ihren spezifischen Anforderungen und der von Ihnen verwendeten C#-Version auswählen.

Das obige ist der detaillierte Inhalt vonWie rufe ich Async-Methoden ordnungsgemäß über die Hauptmethode in C# auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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