2

いくつかのソケットを適切に閉じて、閉じていることをサーバーに伝えたいのですが、アプリケーションが閉じられていると、ソケットがすべて閉じられ、ファイルがロックされたままになることがあります。アプリケーションが閉じているときにメソッドを実行するにはどうすればよいですか?

これは、フォーム アプリで使用されるライブラリに入れられます。

4

4 に答える 4

4

フォームにフォーカスを与えることができる Windows フォーム アプリケーションの場合は、プロパティ ウィンドウでイベントの稲妻をクリックし、フォームを閉じるイベントを使用します。

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

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

また、閉じているフォームをインターセプトする必要がある場合は、Cancel プロパティを true に設定します。

e.Cancel = true;
于 2009-05-03T23:45:44.753 に答える
1

これらのリソースを使用するクラスにIDisposableを実装します。Dispose は、アプリケーション タイプがサポートするシャットダウン メソッド (OnFormClose、OnStop、Application_End など) から明示的に呼び出すことができます。

于 2009-05-04T00:32:55.420 に答える
0

WinForms アプリについて話しているのですか? その場合は、メイン フォームでFormClosing イベントを使用します。

于 2009-05-03T23:40:27.513 に答える
0

それが最適な場所かどうかはわかりませんが、AppDomain.ProcessExitをフックすることで、プロセスが閉じていることを確認できます。クリーンアップには問題ありませんが、メッセージを送信するのに適した時期ではないと思います。:)

于 2009-05-03T23:41:00.960 に答える