Maison > développement back-end > C++ > Comment puis-je effectuer simplement des appels de méthode non bloquants en C# ?

Comment puis-je effectuer simplement des appels de méthode non bloquants en C# ?

DDD
Libérer: 2025-01-18 15:46:08
original
721 Les gens l'ont consulté

How Can I Make Non-Blocking Method Calls in C# Simply?

Simplification des appels de méthodes non bloquantes en C#

C# propose plusieurs façons de créer des méthodes non bloquantes, c'est-à-dire des méthodes qui s'exécutent de manière asynchrone sans arrêter le thread principal. Bien que l'attribut [OperationContract(IsOneWay = true)] de WCF fournisse cette fonctionnalité, cela peut s'avérer excessif pour des scénarios plus simples.

L'approche la plus simple utilise ThreadPool.QueueUserWorkItem. Cette méthode ajoute efficacement une tâche au pool de threads, permettant une exécution asynchrone.

Voici un exemple illustratif :

class Foo
{
    static void Main()
    {
        ThreadPool.QueueUserWorkItem(_ => FireAway()); //Asynchronous execution
        Console.WriteLine("Immediate execution");
    }

    static void FireAway()
    {
        System.Threading.Thread.Sleep(5000);
        Console.WriteLine("Execution after 5 seconds");
    }
}
Copier après la connexion

Alternativement, C# 5.0 et les versions ultérieures fournissent Task.Run, offrant un moyen plus moderne et plus concis d'obtenir une exécution asynchrone sur un thread de pool de threads :

Task.Run(() => FireAway());
Copier après la connexion

ThreadPool.QueueUserWorkItem et Task.Run empêchent le thread principal de se bloquer pendant l'exécution de la méthode asynchrone.

Cependant, il est crucial de déterminer si l'achèvement de la méthode est essentiel avant la fin de la méthode Main. Dans des environnements comme ASP.NET, des mécanismes supplémentaires peuvent être nécessaires pour empêcher l'arrêt prématuré de l'opération asynchrone.

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal