关于WSACancelBlockingCall在使用TcpListener中的问题

surefire 2007-08-21 12:26:54
我在一个线程里使用了TcpListener的AcceptSocket方法来侦听是否有客户端的连接请求,但是在调用TcpListener的Stop方法是会弹出一个对话框说"一个封锁操作被对 WSACancelBlockingCall的调用中断",这是怎么回事?而且,似乎Stop并没有让TcpListener停止监听,我还是可以发送消息!

线程中是这样用的:
try
{
listener.Start();


while (!mStop)
{

Socket s = listener.AcceptSocket();
NetworkStream nStream = new NetworkStream(s);
StreamReader stream = new StreamReader(nStream);
String msg = stream.ReadLine();
WriteMsg(msg);

stream.Close();
nStream.Close();
s.Close();

}

}
catch
{
//
}

停止监听是在一个button的Click事件里执行,代码就是:
mStop = true;
try
{
listener.Stop();
}
catch
{
//
}

这个问题是怎么回事?是不是因为AcceptSocket一直阻塞了,在调用Stop的时候就会有问题?
...全文
329 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tyg111 2010-07-14
  • 打赏
  • 举报
回复
关注中,顶起
he11o 2007-08-21
  • 打赏
  • 举报
回复
我也遇到了,不放到线程就没事,只是不放到线程,程序就跟死了一样,哈哈
jetxia 2007-08-21
  • 打赏
  • 举报
回复
up

110,526

社区成员

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

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

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