110,538
社区成员
发帖
与我相关
我的任务
分享
引自c# 中我开了线程task 用udpclient接收消息,请问怎么安全关闭这个线程以及udpclient试一下这样释放快不快 udpclient.Close();//关闭协议 udpclient.Dispose();//释放协议 udpclient = null;//为协议至空值 t.DisableComObjectEagerCleanup();//直接释放掉当前线程
倒不是说UdpClient的Dispose方法是保护的。它显式实现了IDisposable,所以如果要调用,要显式的用IDisposable接口调用:(udpClient as IDisposable).Dispose();或使用using模式(比较好)
//udpclient.Dispose();//释放协议
(udpclient as IDisposable).Dispose();
[quote=引用 5 楼 save4me 的回复:] 引自c# 中我开了线程task 用udpclient接收消息,请问怎么安全关闭这个线程以及udpclient试一下这样释放快不快 udpclient.Close();//关闭协议 udpclient.Dispose();//释放协议 udpclient = null;//为协议至空值 t.DisableComObjectEagerCleanup();//直接释放掉当前线程
udpclient.Close();//关闭协议 udpclient.Dispose();//释放协议 udpclient = null;//为协议至空值 t.DisableComObjectEagerCleanup();//直接释放掉当前线程
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
EndPoint localEP = new IPEndPoint(IPAddress.Any, 1001);
int n = 0;
while (true) ////循环判断端口是否被占用,没有就退出;如果被占用,循环10次就退出
{
if (n == 10)
{
break;
}
try
{
socket.Bind(localEP);
break;
}
catch
{
n++;
}
finally
{
Thread.Sleep(60000);
}
}
的限制
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
EndPoint localEP = new IPEndPoint(IPAddress.Any, 1001);
while (true) //循环判断端口是否被占用,没有就退出
{
try
{
socket.Bind(localEP);
break;
}
catch { }
finally
{
Thread.Sleep(60000);
}
}