Maison >développement back-end >C++ >Comment arrêter en toute sécurité un thread .NET ?

Comment arrêter en toute sécurité un thread .NET ?

DDD
DDDoriginal
2024-12-28 08:24:15898parcourir

How to Safely Stop a .NET Thread?

Arrêter un thread .NET

Dans le développement de logiciels, il peut parfois devenir nécessaire de mettre fin prématurément à l'exécution d'un thread. Cependant, l'utilisation directe de Thread.Abort() est déconseillée en raison de son risque de provoquer un comportement inattendu.

Au lieu de cela, il est recommandé de mettre en œuvre une approche coopérative pour la terminaison des threads. Cela implique la création d'un thread qui surveille un indicateur booléen, tel que keepGoing, indiquant s'il doit continuer à s'exécuter.

public class WorkerThread
{
    private bool _keepGoing = true;

    public void Run()
    {
        while (_keepGoing)
        {
            // Perform the intended work of the thread.
        }
    }

    public void Stop()
    {
        _keepGoing = false;
    }
}

Cette implémentation révisée permet un arrêt sûr et ordonné du thread lorsque la méthode Stop est appelée. , empêchant les effets indésirables de Thread.Abort().

De plus, les threads susceptibles de rencontrer des opérations de blocage, telles que Sleep ou Wait, doivent être prêts à gérer un ThreadInterruptedException et quittez-le en douceur.

try
{
    while (_keepGoing)
    {
        // Perform the intended work of the thread.
    }
}
catch (ThreadInterruptedException exception)
{
    // Handle the interruption and perform necessary cleanup.
}

En mettant en œuvre cette approche coopérative de la terminaison des threads, les développeurs peuvent garder le contrôle sur le cycle de vie de leurs threads, garantissant ainsi une exécution fiable et prévisible des applications.

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