Как очистить приложение, использующее модель VB6, при закрытии приложения?


0

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

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

  0

* shutting - пожалуйста, проверьте. 23 сен. 082008-09-23 20:47:29

2

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

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

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

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

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


0

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

  0

Событие «Разгрузка» происходит в форме. Приложение показывает несколько форм. Я ищу центральное место, чтобы обнаружить, что приложение закрывается, потому что в приложении более 400 форм. 23 сен. 082008-09-23 20:45:28


0

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

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