读书人

关于WSACancelBlockingCall在使用TcpL

发布时间: 2012-01-29 21:39:32 作者: rapoo

关于WSACancelBlockingCall在使用TcpListener中的问题
我在一个线程里使用了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的时候就会有问题?

[解决办法]
up
[解决办法]
我也遇到了,不放到线程就没事,只是不放到线程,程序就跟死了一样,哈哈

读书人网 >C#

热点推荐