Como pode um aplicativo VB6 modal fazer a limpeza quando o aplicativo está sendo desligado?

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

Pergunta

Uma aplicação VB6 está usando o Interop Forms Toolkit para trabalhar com formas escritas em .NET. A documentação para o kit de ferramentas aconselha chamar um método no kit de ferramentas para orientar o conjunto de ferramentas quando o aplicativo VB6 está sendo desligado.

A aplicação VB6 usa um procedimento Sub Main que carrega uma tela de abertura, em seguida, exibe várias formas modais. Quando concluída Sub principal, o aplicativo ainda está em execução. Como pode o aplicativo detectar que está sendo desligado e chamar o método de limpeza no Toolkit?

Foi útil?

Solução

Em um módulo (provavelmente a mesma que contém Sub Main), criar um sub público (por exemplo AppCleanUp) que irá realizar o seu código de limpeza.

Adicionar uma classe ao seu projeto (por exemplo clsAppCleanup). Nesta classe, adicionar o código no manipulador de eventos Class_Terminate que chama a sub você criou no passo anterior.

Em um módulo (provavelmente a mesma que contém Sub Main), definir uma variável de clsAppCleanup.

Na Sub Main, instanciar o clsAppCleanup.

Quando o aplicativo está sendo desligado, A terminar evento na classe fará com que o código de limpeza para ser executado.

Outras dicas

Sua sido um tempo desde que eu escrevi em VB6, mas se bem me lembro, você pode usar o evento Unload para chamar o código de limpeza (é semelhante ao evento de encerramento no .net). Você também pode verificar que não existem outras formas no aplicativo VB6 ainda em execução

Criar um módulo que contém uma variável FormCount. Esta variável será compartilhada por todas as formas de sua aplicação. Incrementar a variável FormCount no método Form_Initialize de todas as formas. Decremento FormCount no método Form_Terminate de todas as formas. Quando FormCount cai de volta a 0, você pode notificar o formulário conjunto de ferramentas que os formulários foram descarregados.

Você não terá que se preocupar com questões multi-threading, porque VB6 cria aplicações single-threaded, então Inicializar de uma forma (ou Encerrar) método será executado até a conclusão antes de quaisquer outros começar a execução.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top