多线程调用Abort后卡死

woshimadem 2013-09-25 08:09:18
这是我另一个线程跑的方法,在我退出前我想把它用Abort方法关掉,但是我调用chatThread.Abort()后它就卡在那里不动我,我但不调试也是到这一步就卡死了,界面也移不动什么都做不了,求大神解答一下什么原理

private void ListenChat()
{
while (true)
{
lock (lockObjChat)
{
try
{
ChatSocket.Listen(0);
Socket s = ChatSocket.Accept();
string recvStr = Utility.RecvMessage(s);
if (MessageBox.Show("there is a call for you,receive ?", "Ask",
MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
== System.Windows.Forms.DialogResult.OK)
{
Chat c = new Chat(recvStr, s, ChatCategory.Receiver);
this.Invoke(new ShowChatForm(ShowChat), c);
}
}
catch (SocketException e)
{
MessageBox.Show(e.Message.ToString() + e.ErrorCode+e.Source);
}
}
}
}
...全文
527 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
devmiao 2013-09-25
  • 打赏
  • 举报
回复
发消息让线程自己退出比较好,强行关闭太暴力了。
  • 打赏
  • 举报
回复
是么是Abort?你给个客户跑通的例子好么? 学东西不要简单地抠字眼(不要见到Abort这个英文词儿就望文生义),一定要搞懂一点内部机制。

110,534

社区成员

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

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

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