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

StackOverflow https://stackoverflow.com/questions/123688

Question

Une application VB6 utilise Interop Forms Toolkit pour gérer les formulaires écrits en .NET. La documentation de la boîte à outils conseille d'appeler une méthode de la boîte à outils pour l'informer de la fermeture de l'application VB6.

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 son arrêt et appeler la méthode de nettoyage dans la boîte à outils?

Était-ce utile?

La solution

Dans un module (probablement le même que celui qui contient Sub Main), créez un sous-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-dossier créé à l'étape précédente.

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

Dans Sub Main, instanciez le clsAppCleanup.

Lorsque l'application est en cours de fermeture, l'événement de terminaison de la classe entraîne l'exécution du code de nettoyage.

Autres conseils

Cela fait longtemps que je n’ai pas écrit dans 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 clôture en .net). Vous pouvez également vérifier qu’il n’ya pas d’autres formulaires dans l’application VB6 en cours d’exécution

Créez un module contenant 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 repasse à 0, vous pouvez informer votre boîte à outils que les formulaires ont été déchargés.

Vous n'avez pas à vous soucier des problèmes de multi-threads car VB6 crée des applications à un seul thread. Par conséquent, la méthode Initialize (ou Terminate) d'un formulaire s'exécute complètement avant que les autres ne commencent à s'exécuter.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top