単純なwpfアプリケーションを構築しています。GUIにはボタンがあり、押すとバックグラウンドスレッドが作成されます。WebSocketサーバーはこのバックグラウンドスレッドで実行されます。WebSocketサーバーはイベント駆動型です。このサーバーではアクティビティが少ない期間があるかもしれませんが、ボリュームが少ないためにスレッドを終了したくありません。このスレッドを永続化する簡単な方法はありますか(少なくともアプリが終了するまで)?
質問する
1038 次
1 に答える
1
ボリュームが少ないためにスレッドが終了するのはなぜですか?スレッドは、指示した場合にのみ終了します。アプリケーションとフォームが閉じていても、バックグラウンドスレッドは実行される可能性があります。
スレッド内のTCPServerクラス(TCPListenerを使用)に似たものがあります。バックグラウンドスレッドはAcceptTcpClient()(ブロックしていて無限ループ)でブロックできるため、TCPListenerを手動で閉じる必要があります。
public partial class MainForm : Form
{
public TCPServer TCPServer = new TCPServer();
private Thread ServerThread = null;
private void button1_Click(object sender, EventArgs e)
{
ServerThread = new Thread(TCPServer.Run);
ServerThread.Start();
}
private void OnApplicationExit(object sender, EventArgs e)
{
if (TCPServer.Server != null)
TCPServer.Server.Stop();
}
}
于 2012-09-06T02:57:34.143 に答える