作者Achillean (山猪元年革命志士)
看板C_Sharp
标题[问题] Socket 待机状态如何关闭?
时间Fri Jul 26 16:54:33 2013
我用执行绪呼叫了一个无穷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
1F:推 TeemingVoid:_thread.Abort() ?! 07/26 23:02
这个试验过了 没有用
2F:→ ghostx2:while (!isBreak) 07/27 02:22
这要执行绪能继续往下走到判断while才有用
但目前是卡在
Socket client = _socket.Accept();
没办法往下走
3F:→ ideaup:_thread.Join(); 07/27 11:05
在formclosing事件呼叫
就整个_thread发呆在等待
不知道该怎麽写
可以给个简单范例?
4F:推 ideaup:我是在主控台应用程式中使用, 其他程式使用情形不知. 07/28 10:33
5F:→ sweetjp6:试试看_thread.IsBackground = true 07/28 16:07
IsBackground 跟健生中医一样有效~
※ 编辑: Achillean 来自: 122.116.78.236 (07/29 10:44)