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>
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>
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!