Question

Je voudrais bien fermer certaines sockets et pouvoir dire au serveur que nous fermons, mais si l'application est fermée, les sockets sont tout simplement fermés et, à l'occasion, les fichiers sont laissés verrouillés. Comment puis-je exécuter une méthode lorsque mon application est fermée?

Cela va aller dans une bibliothèque qui sera utilisée dans une application de formulaires.

Était-ce utile?

La solution

J'appliquerais IDisposable sur les classes qui utilisent ces ressources. Dispose peut ensuite être appelé explicitement à partir de la méthode d'arrêt prise en charge par le type d'application (OnFormClose, OnStop, Application_End, ...).

Autres conseils

Si c’est une application Windows Forms, vous pouvez activer le formulaire, cliquez sur l’attache éclair d’événements dans la fenêtre des propriétés et utilisez l’événement Clôture de formulaire.

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

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

De même, si vous devez intercepter le formulaire en cours de fermeture, définissez la propriété Cancel sur true:

e.Cancel = true;

Parlez-vous d'une application WinForms? Si tel est le cas, utilisez l'événement FormClosing sur votre formulaire principal.

Je ne sais pas si c'est le meilleur endroit pour cela, mais vous pouvez dire que votre processus est en train de se terminer en décrochant AppDomain.ProcessExit . C'est bon pour le nettoyage, mais je ne pense pas que le moment soit bien choisi pour envoyer des messages. :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top