Maison >développement back-end >C++ >Comment fermer gracieusement un formulaire avec un fonctionnaire actif?
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 provoquerbgWorker.CancelAsync()
Invoke()
Dans HandleclosingEvent, en attendant que Backgroundworker se termine, il provoquera des verrous morts, car ObjectDisposedException
ne reviendra pas. 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é.
closePending
sur true, annulez le backgroundworker et définissez le OnFormClosing
Dans le programme de traitement des événements closePending
e.Cancel = true
Après avoir désactivé l'opération, réinitialisez le logo RunWorkerCompleted
closePending
Exemple de code: closePending
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!