Как немодальное приложение VB6 может выполнять очистку при завершении работы приложения?

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

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top