Heim > Backend-Entwicklung > C++ > Wie kann ich in C# einfach nicht blockierende Methodenaufrufe durchführen?

Wie kann ich in C# einfach nicht blockierende Methodenaufrufe durchführen?

DDD
Freigeben: 2025-01-18 15:46:08
Original
668 Leute haben es durchsucht

How Can I Make Non-Blocking Method Calls in C# Simply?

Vereinfachung nicht blockierender Methodenaufrufe in C#

C# bietet mehrere Möglichkeiten zum Erstellen nicht blockierender Methoden – Methoden, die asynchron ausgeführt werden, ohne den Hauptthread anzuhalten. Während das [OperationContract(IsOneWay = true)]-Attribut von WCF diese Funktionalität bereitstellt, kann es für einfachere Szenarien übertrieben sein.

Der einfachste Ansatz verwendet ThreadPool.QueueUserWorkItem. Diese Methode fügt effizient eine Aufgabe zum Thread-Pool hinzu und ermöglicht so eine asynchrone Ausführung.

Hier ist ein anschauliches Beispiel:

<code class="language-csharp">class Foo
{
    static void Main()
    {
        ThreadPool.QueueUserWorkItem(_ => FireAway()); //Asynchronous execution
        Console.WriteLine("Immediate execution");
    }

    static void FireAway()
    {
        System.Threading.Thread.Sleep(5000);
        Console.WriteLine("Execution after 5 seconds");
    }
}</code>
Nach dem Login kopieren

Alternativ bieten C# 5.0 und spätere Versionen Task.Run, was eine modernere und prägnantere Möglichkeit bietet, eine asynchrone Ausführung in einem Thread-Pool-Thread zu erreichen:

<code class="language-csharp">Task.Run(() => FireAway());</code>
Nach dem Login kopieren

Sowohl ThreadPool.QueueUserWorkItem als auch Task.Run verhindern, dass der Hauptthread während der Ausführung der asynchronen Methode blockiert.

Es ist jedoch wichtig zu prüfen, ob der Abschluss der Methode unbedingt erforderlich ist, bevor die Main-Methode beendet wird. In Umgebungen wie ASP.NET sind möglicherweise zusätzliche Mechanismen erforderlich, um eine vorzeitige Beendigung des asynchronen Vorgangs zu verhindern.

Das obige ist der detaillierte Inhalt vonWie kann ich in C# einfach nicht blockierende Methodenaufrufe durchführen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage