Maison >développement back-end >C++ >Comment fermer gracieusement un formulaire avec un fonctionnaire actif?

Comment fermer gracieusement un formulaire avec un fonctionnaire actif?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-31 17:01:10845parcourir

How to Gracefully Close a Form with an Active BackgroundWorker?

fermeture élégante de la fenêtre avec un événement Backgroundworker

Lorsque la fenêtre initialise un arrière-plan de l'interface utilisateur de la fenêtre de mise à jour, la fermeture de la fenêtre sans rencontrer de serrures anormales ou mortes peut devenir délicate. Ce problème met en évidence les défis auxquels sont confrontés lorsqu'ils essaient d'arrêter Backgroundworker dans l'incident de clôture de la fenêtre.

Question:

Utilisation

Pour annuler le fond de fond dans handleclosingEvent peut provoquer
    lors de l'appel
  1. . bgWorker.CancelAsync() Invoke() Dans HandleclosingEvent, en attendant que Backgroundworker se termine, il provoquera des verrous morts, car ObjectDisposedException ne reviendra pas.
  2. Invoke() Solution:

Éviter les serrures mortes et les méthodes de sécurité anormales consiste à annuler l'événement FormCosing lui-même. Les étapes suivantes décrivent la solution:

Définissez un logo pour suivre la demande de clôture de l'utilisateur.

Dans la couverture , vérifiez si le fond de fond est occupé.
  1. Si vous êtes occupé, définissez le closePending sur true, annulez le backgroundworker et définissez le
  2. pour empêcher la fenêtre de fermer.
  3. OnFormClosing Dans le programme de traitement des événements
  4. de BackgroundWorker, vérifiez si
  5. . Si c'est vrai, fermez la fenêtre. closePending e.Cancel = true Après avoir désactivé l'opération, réinitialisez le logo
  6. en false.
  7. RunWorkerCompleted closePending Exemple de code:
  8. closePending
  9. En utilisant cette méthode, même si Backgroundworker met à jour activement l'interface utilisateur, la fenêtre peut également être élégante sans serrures anormales ou mortes.

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