Comment éviter les exceptions lors de la fermeture d’un formulaire lorsque l’appel d’un contrôle entre threads ne peut pas accéder aux objets éliminés. Lors de l’appel d’un formulaire à travers des threads dans un thread, et lors de l’utilisation d’invoke pour attribuer des valeurs ou modifier des propriétés des contrôles de formulaire, si le thread n’est pas terminé avant la fermeture du formulaire, une exception de ce type apparaîtra toujours : impossible d’accéder à un objet éliminé. La raison devrait être que, lorsque le contrôle de formulaire est appelé dans le thread, celui-ci a été déconnecté, donc il sort de tous les threads avant que le formulaire ne soit déconnecté. Pour résoudre ce problème, vous pouvez ajouter le code suivant :
L’exception n’apparaîtra plus. Appeler system.environment.exit(0) peut complètement quitter le programme, peu importe le thread forcé de quitter, ce qui met fin au programme très proprement.
Événement de clôture FormForm
Lorsque le formulaire est fermé, l’événement FormClosing se produit. Cet événement est géré. Cela libère toutes les ressources liées au formulaire.
Si vous annulez cet événement, le formulaire reste ouvert.
Lorsque le formulaire apparaît en mode de dialogue, cliquer sur Fermer masque le formulaire et met la propriété RésultatDialogue sur Annuler. En définissant la propriété RésultdeDialogue dans certains événements, la valeur de RésultatDialogue peut être écrasée lorsque l’utilisateur clique sur le bouton fermer en haut à droite.
Événement FormClosed
Un événement FormClosed survient après que la méthode Close ou Exit de l’utilisateur ou de la classe Application a fermé le formulaire.
Vous pouvez utiliser cet événement pour libérer certaines ressources du formulaire. Vous pouvez également utiliser cet événement pour sauvegarder certaines informations dans le formulaire de saisie ou pour mettre à jour le formulaire parent.
|