socket编程 动态Thread如何关闭
luhr 2014-11-23 08:54:28 目前的代码逻辑:动态创建带socket参数的Thread,开启线程连接socket并接受数据,
接受完数据立刻socket.Disconnet()并且Thread.Abord()
现在的问题是,动态创建的Thread无法关闭
/// 添加带socket参数的线程
private void AddCCDThread(ccd c)
{
Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(Receive)) { IsBackground = true };
thread.Start(c);
}
Process current = Process.GetCurrentProcess();
void Receive(object p)
{
ccd client = (ccd)p;
IPAddress ipAdress = IPAddress.Parse(client.ip);
IPEndPoint endPoint = new IPEndPoint(ipAdress, Convert.ToInt32(client.port));//终结点
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
socket.Connect(endPoint);
}
catch
{
}
while(socket.Connected)
{
try
{
byte[] byteMsg = new byte[1024 * 1024 * 4];
int length = socket.Receive(byteMsg);
string strMsg = Encoding.Default.GetString(byteMsg, 0, length);
}
catch
{
}
socket.Disconnect(true);
}
//问题:断点根本不到if这里
if (System.Threading.Thread.CurrentThread.IsAlive)
{
System.Threading.Thread.CurrentThread.Abort();
}