Comment une application VB6 non modale peut-elle effectuer un nettoyage lorsque l'application est en cours de fermeture?


0

Une application VB6 utilise Interop Forms Toolkit pour travailler avec des formulaires écrits en .NET. La documentation de la boîte à outils conseille d'appeler une méthode sur la boîte à outils pour informer la boîte à outils lorsque l'application VB6 est en cours de fermeture.

L'application VB6 utilise une procédure Sub Main qui charge un écran de démarrage, puis affiche plusieurs formulaires non modaux. Lorsque Sub Main est terminé, l'application est toujours en cours d'exécution. Comment l'application peut-elle détecter qu'elle s'arrête et appeler la méthode de nettoyage de la boîte à outils?

  0

* fermeture - Veuillez corriger. 23 sept.. 082008-09-23 20:47:29

2

Dans un module (probablement le même contenant Sub Main), créez un sous-système public (par exemple AppCleanUp) qui contiendra votre code de nettoyage.

Ajoutez une classe à votre projet (par exemple, clsAppCleanup). Dans cette classe, ajoutez du code dans le gestionnaire d'événements Class_Terminate qui appelle le sous-programme créé à l'étape précédente.

Dans un module (probablement le même contenant Sub Main), définissez une variable de clsAppCleanup.

Dans Sub Main, instanciez le clsAppCleanup. Lorsque l'application est en cours d'arrêt, l'événement terminate de la classe provoque l'exécution du code de nettoyage.


0

Cela fait un moment que j'ai écrit en VB6 mais si je me souviens bien, vous pouvez utiliser l'événement Unload pour appeler votre code de nettoyage (similaire à l'événement de fermeture en .net). Vous pouvez également vérifier qu'il n'y a pas d'autres formulaires dans l'application VB6 en cours d'exécution

  0

L'événement Unload se produit dans le formulaire. L'application montre plusieurs formes. Je cherche un endroit central pour détecter que l'application est en train de se fermer, car il y a plus de 400 formulaires dans l'application. 23 sept.. 082008-09-23 20:45:28


0

Créez un module qui contient une variable FormCount. Cette variable sera partagée par tous les formulaires de votre application. Incrémentez la variable FormCount dans la méthode Form_Initialize de chaque formulaire. Décrémentez FormCount dans la méthode Form_Terminate de chaque formulaire. Lorsque FormCount revient à 0, vous pouvez indiquer à votre boîte à outils que les formulaires ont été déchargés. Vous n'aurez pas à vous soucier des problèmes de multi-threading, car VB6 crée des applications à un seul thread. La méthode Initialize (ou Terminate) d'un formulaire s'exécutera donc avant l'exécution de tous les autres.