Maison > développement back-end > C++ > Comment abandonner ou annuler correctement les tâches TPL en C# ?

Comment abandonner ou annuler correctement les tâches TPL en C# ?

Mary-Kate Olsen
Libérer: 2025-01-25 02:36:09
original
107 Les gens l'ont consulté

How to Properly Abort or Cancel TPL Tasks in C#?

Découvrir / annuler la tâche TPL

Dans la programmation multi-thread, lors de l'utilisation de la méthode .Abort () pour terminer les threads, les tâches créées dans ce fil peuvent continuer à s'exécuter, entraînant des comportements inattendus. Cet article décrit la méthode correcte de suspension ou d'annulation de la tâche TPL (Task Parallel Library).

La mission TPL est effectuée sur les threads d'arrière-plan de la piscine de fil, et ils ne peuvent pas être arrêtés directement. La méthode recommandée consiste à utiliser la marque d'annulation.

L'étiquette d'annulation fournit un moyen d'émettre un signal d'exécution d'arrêt à la tâche. Pour ceci:

Créez une annulation de TokenSource.
  1. Obtenez l'annulation de la source.
  2. Le constructeur de la tâche ou .WithCancellation () a passé l'annulation de l'annulation à la tâche.
  3. Lorsque la tâche doit être suspendue, appelez Annuler () sur AnnuleLelationTokenSource.
  4. Les exemples de code suivants démontrent cette méthode:

Cet exemple révocal utilise
<code class="language-csharp">class Program
{
    static void Main()
    {
        var cts = new CancellationTokenSource();
        CancellationToken ct = cts.Token;
        Task.Factory.StartNew(() =>
        {
            while (!ct.IsCancellationRequested)
            {
                // 执行一些繁重的工作
                Thread.Sleep(100);
                // 检查取消请求
                if (ct.IsCancellationRequested)
                {
                    Console.WriteLine("任务已取消");
                    break;
                }
            }
        }, ct);

        // 模拟等待任务完成 3 秒
        Thread.Sleep(3000);

        // 无法再等待 => 取消此任务
        cts.Cancel();
        Console.ReadLine();
    }
}</code>
Copier après la connexion
dans la condition de boucle

pour une meilleure lisibilité et une meilleure clarté, vérifiant directement la demande d'annulation avec la boucle. .

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