Maison >développement back-end >C++ >Comment fermer gracieusement un fonctionnaire à la fermeture d'un formulaire?

Comment fermer gracieusement un fonctionnaire à la fermeture d'un formulaire?

Barbara Streisand
Barbara Streisandoriginal
2025-01-31 16:56:10286parcourir

How to Gracefully Shut Down a BackgroundWorker When a Form Closes?

Le thread de travail d'arrière-plan lorsque la fenêtre de traitement élégante est fermée

Lorsque la fenêtre initialise un thread de travail d'arrière-plan (BackgroundWorker), il est essentiel de l'annuler correctement lorsque la fenêtre est fermée. Sinon, cela peut provoquer une anormale ou mortelle.

Description du problème

Une fenêtre a instancié un backgroundworker et a mis à jour sa zone de texte sur le thread principal. Lorsque l'événement de clôture de la fenêtre est déclenché, le fond de fond sera simplement annulé et le objetDisposexception est anormal sur l'appel inférieur (). Au lieu de cela, attendre que Backgroundworker se termine dans l'incident de clôture provoquera des verrous morts car l'opération invoquée () est bloquée.

Solution

Afin de résoudre ce problème, si BackgroundWorker est toujours en cours d'exécution, l'événement FormClosing doit être annulé. Cela peut être mis en œuvre via les étapes suivantes:

Traitez l'événement OnformClosing dans la fenêtre.

Vérifiez si le fond de fond est occupé, si c'est le cas, annulez-le.
  • Définissez une clôture pour indiquer la fermeture de la demande de l'utilisateur.
  • Ensuite, le programme de traitement d'événements RunWorkerCluled de Background peut vérifier le logo en pente et appeler le clos () si nécessaire.
  • Ce qui suit est un exemple d'implémentation:

Grâce à cette méthode, la fenêtre peut être désactivée sans cause de serrures anormales ou mortes, afin d'assurer l'élégance du fond.

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