求教各种大神C#怎么强制终止线程

阔活洵信 2014-09-12 04:05:25
事情大概是这样的:我通过一个线程启动Socket服务,

/// <summary>
/// 获取连接的客户端
/// </summary>
private void RecieveAccept()
{
while (true)
{
try
{
Socket socket = ServerSocket.Accept();
。。。。。。。。。。。
}
catch (Exception ex)
{
Log.WriteError(ex.ToString());
}
}
}

我拿一个线程启动了这样一个东西,没有连接请求的时候,就一直阻塞在Accept处,没法通过主线程来把这个接收线程给停止了,请问有没有大神知道怎么强制停止线程
...全文
1743 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-09-12
  • 打赏
  • 举报
回复
或者如果用1楼的办法,你需要在catch里加处理,不能直接扔文件里拉倒 你需要判断,如果是这种类型的错误,就break
於黾 2014-09-12
  • 打赏
  • 举报
回复
可以用线程.Abort(); 不过你建立线程变量需要记住(全局变量),不能在load里随便定义个Thread并start 那样你在想要关闭的时候,找不到这个线程的句柄了
阔活洵信 2014-09-12
  • 打赏
  • 举报
回复
引用 1 楼 Forty2 的回复:
ServerSocket.Close();
嗯,这个做法是可行的,只不过会抛出异常 System.Net.Sockets.SocketException (0x80004005): 一个封锁操作被对 WSACancelBlockingCall 的调用中断。 我之前没有在catch里面继续加上线程停止的代码,导致Socket关闭了,但是还一直在循环,然后我的错误日志文件就在暴涨。。。
Forty2 2014-09-12
  • 打赏
  • 举报
回复
ServerSocket.Close();

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧