Maison >développement back-end >C++ >Comment effectuer des appels de méthode non bloquants en C# à l'aide de « ThreadPool.QueueUserWorkItem » et « Task.Run » ?

Comment effectuer des appels de méthode non bloquants en C# à l'aide de « ThreadPool.QueueUserWorkItem » et « Task.Run » ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-18 16:02:091022parcourir

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn