Как может немодальное приложение VB6 выполнять очистку при завершении работы приложения? - PullRequest
1 голос
/ 24 сентября 2008

Приложение VB6 использует Interop Forms Toolkit для работы с формами, написанными на .NET. Документация к инструментарию рекомендует вызывать метод из инструментария, чтобы советовать инструментарию при завершении работы приложения VB6.

Приложение VB6 использует процедуру Sub Main, которая загружает заставку, а затем отображает несколько немодальных форм. Когда Sub Main завершает работу, приложение все еще работает. Как приложение может обнаружить, что оно завершает работу, и вызвать метод очистки в наборе инструментов?

Ответы [ 3 ]

3 голосов
/ 24 сентября 2008

В модуле (возможно, в том же, который содержит Sub Main) создайте общедоступную подпрограмму (например, AppCleanUp), в которой будет находиться ваш код очистки.

Добавьте класс в ваш проект (например, clsAppCleanup). В этом классе добавьте код в обработчик событий Class_Terminate, который вызывает подпрограмму, созданную на предыдущем шаге.

В модуле (возможно, в том же, который содержит Sub Main) определите переменную clsAppCleanup.

В Sub Main создайте экземпляр clsAppCleanup.

Когда приложение закрывается, событие завершения в классе вызовет выполнение кода очистки.

0 голосов
/ 27 ноября 2008

Создайте модуль, который содержит переменную FormCount. Эта переменная будет доступна всем формам в вашем приложении. Увеличивайте переменную FormCount в методе Form_Initialize каждой формы. Уменьшите FormCount в методе Form_Terminate каждой формы. Когда FormCount возвращается к 0, вы можете уведомить свой набор инструментов о том, что формы были выгружены.

Вам не придется беспокоиться о проблемах с многопоточностью, поскольку VB6 создает однопоточные приложения, поэтому один из методов Initialize (или Terminate) формы будет выполнен до завершения, прежде чем другие начнут выполнение.

0 голосов
/ 24 сентября 2008

Прошло много времени с тех пор, как я написал в VB6, но если я правильно помню, вы можете использовать событие Unload для вызова вашего кода очистки (аналогично закрытию в .net). Вы также можете проверить, что в приложении VB6 нет других форм, все еще работающих

...