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
196 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
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();
    }
}
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!

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