看板 C_Sharp 關於我們 聯絡資訊
我用執行緒呼叫了一個無窮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
TeemingVoid:_thread.Abort() ?! 07/26 23:02
這個試驗過了 沒有用
ghostx2:while (!isBreak) 07/27 02:22
這要執行緒能繼續往下走到判斷while才有用 但目前是卡在 Socket client = _socket.Accept(); 沒辦法往下走
ideaup:_thread.Join(); 07/27 11:05
在formclosing事件呼叫 就整個_thread發呆在等待 不知道該怎麼寫 可以給個簡單範例?
ideaup:我是在主控台應用程式中使用, 其他程式使用情形不知. 07/28 10:33
sweetjp6:試試看_thread.IsBackground = true 07/28 16:07
IsBackground 跟健生中醫一樣有效~ ※ 編輯: Achillean 來自: 122.116.78.236 (07/29 10:44)