Heim > Backend-Entwicklung > C++ > Wie führt man nicht blockierende Methodenaufrufe in C# mit „ThreadPool.QueueUserWorkItem' und „Task.Run' durch?

Wie führt man nicht blockierende Methodenaufrufe in C# mit „ThreadPool.QueueUserWorkItem' und „Task.Run' durch?

Patricia Arquette
Freigeben: 2025-01-18 16:02:09
Original
972 Leute haben es durchsucht

How to Make Non-Blocking Method Calls in C# Using `ThreadPool.QueueUserWorkItem` and `Task.Run`?

Nicht blockierender Methodenaufruf in C#: Verwendung von ThreadPool.QueueUserWorkItem und Task.Run

In C# können Methoden nicht blockierend ausgeführt werden, sodass Threads weiterhin ausgeführt werden können, ohne auf den Abschluss der Methode warten zu müssen.

Der direkteste Weg ist die Verwendung der ThreadPool.QueueUserWorkItem-Methode. Es akzeptiert einen WaitCallback-Delegaten als Parameter, der die Methode angibt, die asynchron ausgeführt werden soll.

Beispiel:

<code class="language-csharp">using System.Threading;

class Foo
{
    static void Main()
    {
        // FireAway将在后台执行
        ThreadPool.QueueUserWorkItem(o => FireAway());

        Console.WriteLine("立即执行");
    }

    static void FireAway()
    {
        Thread.Sleep(5000);
        Console.WriteLine("5秒后执行");
    }
}</code>
Nach dem Login kopieren

In diesem Beispiel wird die FireAway-Methode in den Thread-Pool eingereiht und der Hauptthread setzt die Ausführung unmittelbar nach dem Initiieren des asynchronen Aufrufs fort.

Eine andere Methode: Task.Run

Eine modernere und übersichtlichere Möglichkeit, Aufgaben asynchron auszuführen, ist die Verwendung der Task.Run-Methode, die ein Task-Objekt zurückgibt, das den asynchronen Vorgang darstellt.

Beispiel:

<code class="language-csharp">using System.Threading.Tasks;

class Foo
{
    static void Main()
    {
        // FireAway将在后台执行
        Task.Run(() => FireAway());

        Console.WriteLine("立即执行");
    }

    static void FireAway()
    {
        Thread.Sleep(5000);
        Console.WriteLine("5秒后执行");
    }
}</code>
Nach dem Login kopieren

ThreadPool.QueueUserWorkItem und Task.Run bieten beide effiziente Möglichkeiten, Methoden in C# nicht blockierend auszuführen. Beim Einsatz dieser Technologien in verschiedenen Szenarien ist es jedoch wichtig, ihre möglichen Auswirkungen und Einschränkungen zu berücksichtigen.

Das obige ist der detaillierte Inhalt vonWie führt man nicht blockierende Methodenaufrufe in C# mit „ThreadPool.QueueUserWorkItem' und „Task.Run' durch?. 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