Pergunta

Eu gostaria de fechar corretamente algumas bases, e ser capaz de dizer ao servidor que está fechando, mas se o aplicativo for fechado, em seguida, as tomadas são apenas fechadas e em arquivos ocasião são deixados bloqueado. Como posso executar um método quando o aplicativo é fechado?

Este vai entrar em uma biblioteca que será usado em um aplicativo de formulários.

Foi útil?

Solução

Gostaria de implementar IDisposable sobre as classes que o uso esses recursos. Descarte pode então ser chamado explicitamente a partir método de qualquer desligamento do tipo de aplicação suportes (OnFormClose, OnStop, Application_End, ...).

Outras dicas

Se a aplicação é um Windows Forms que você pode dar o foco para o formulário, clique no parafuso de eventos relâmpago na janela de propriedades, e usar o evento Formulário de Encerramento.

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(OnFormClosing);

private void OnFormClosing(object sender, FormClosingEventArgs e)
{
    // Your socket logic here
}

Além disso, se você precisa para interceptar o ser de forma fechada definir a propriedade Cancel como true:

e.Cancel = true;

Você está falando de um aplicativo WinForms? Se assim for, utilize o FormClosing evento em seu formulário principal.

Eu não tenho certeza se é o melhor lugar para isso, mas você pode dizer ao seu processo está fechando enganchando AppDomain.ProcessExit . É bom para a limpeza, mas eu não acho que é um bom momento para ser o envio de quaisquer mensagens fora. :)

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