質問
いくつかのソケットを適切に閉じて、閉じていることをサーバーに伝えることができますが、アプリケーションが閉じている場合、ソケットはすべて閉じられ、ファイルがロックされたままになることがあります。アプリケーションを閉じたときにメソッドを実行するにはどうすればよいですか?
これは、フォームアプリで使用されるライブラリに入ります。
解決
使用するクラスに IDisposable を実装しますこれらのリソース。その後、アプリケーションタイプがサポートするシャットダウンメソッド(OnFormClose、OnStop、Application_Endなど)からDisposeを明示的に呼び出すことができます。
他のヒント
Windows Formsアプリケーションの場合、フォームにフォーカスを設定するには、プロパティウィンドウでイベントの稲妻をクリックし、Form Closingイベントを使用します。
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(OnFormClosing);
private void OnFormClosing(object sender, FormClosingEventArgs e)
{
// Your socket logic here
}
また、閉じているフォームをインターセプトする必要がある場合は、Cancelプロパティをtrueに設定します。
e.Cancel = true;
WinFormsアプリについて話しているのですか?その場合は、 FormClosingイベントメインフォームで。
最適な場所かどうかはわかりませんが、 AppDomain.ProcessExit 。クリーンアップには問題ありませんが、メッセージを送信するのは良い時期ではないと思います。 :)
所属していません StackOverflow