Appel de méthode non bloquant en C# : Utilisation de ThreadPool.QueueUserWorkItem
et Task.Run
En C#, les méthodes peuvent être exécutées de manière non bloquante, permettant aux threads de continuer à s'exécuter sans attendre la fin de la méthode.
Le moyen le plus direct est d'utiliser la méthode ThreadPool.QueueUserWorkItem
. Il accepte un délégué WaitCallback
comme paramètre, qui spécifie la méthode à exécuter de manière asynchrone.
Exemple :
<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>
Dans cet exemple, la méthode FireAway
est mise en file d'attente dans le pool de threads et le thread principal continue son exécution immédiatement après le lancement de l'appel asynchrone.
Une autre méthode : Task.Run
Une manière plus moderne et concise d'exécuter des tâches de manière asynchrone consiste à utiliser la méthode Task.Run
, qui renvoie un objet Task
représentant l'opération asynchrone.
Exemple :
<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
et Task.Run
fournissent tous deux des moyens efficaces d'exécuter des méthodes de manière non bloquante en C#. Cependant, lors de l’utilisation de ces technologies dans différents scénarios, il est important de prendre en compte leurs impacts potentiels et leurs limites.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!