[問題] Socket 待機狀態如何關閉?
我用執行緒呼叫了一個無窮socket的監聽動作run()
_thread = new Thread(new ThreadStart(run));
_thread.Start();
private void run()
{
try
{
while (true)
{
// 接受連線
this.Invoke(new MsgInvoke(AppendMsg), "Wait connecting...");
Socket client = _socket.Accept();
// loop接受資料
while (true)
{
byte[] data = new byte[1024];
int recv = client.Receive(data);
if (recv == 0) break;
string msg = Encoding.Default.GetString(data, 0, recv);
this.Invoke(new MsgInvoke(AppendMsg), msg);
byte[] ack = Encoding.Default.GetBytes("ACK");
client.Send(ack);
}
client.Close();
}
}
catch (Exception e)
{
...
}
}
我是用WFA作視窗
有在FormClosing事件加入
_socket.Shutdown(SocketShutdown.Both);
_socket.Close();
或是
Application.Exit();
都沒辦法讓執行緒斷掉
請問該怎麼可以執行視窗的右上角的X
而不會卡在執行緒死不了這樣
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.78.236
推
07/26 23:02, , 1F
07/26 23:02, 1F
這個試驗過了 沒有用
→
07/27 02:22, , 2F
07/27 02:22, 2F
這要執行緒能繼續往下走到判斷while才有用
但目前是卡在
Socket client = _socket.Accept();
沒辦法往下走
→
07/27 11:05, , 3F
07/27 11:05, 3F
在formclosing事件呼叫
就整個_thread發呆在等待
不知道該怎麼寫
可以給個簡單範例?
推
07/28 10:33, , 4F
07/28 10:33, 4F
→
07/28 16:07, , 5F
07/28 16:07, 5F
IsBackground 跟健生中醫一樣有效~
※ 編輯: Achillean 來自: 122.116.78.236 (07/29 10:44)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章