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
Libérer: 2025-01-18 16:02:09
original
999 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal