您的位置:首页 > 其它

一个封锁操作被对WSACancelBlockingCall的调用中断(在线)

2009-11-19 09:12 453 查看
投资万千种,关键在于实践和自身努力,几种证书挂靠挣钱方法,提供给大家,资料和考试科目。可以参见:http://hi.baidu.com/new/gaofeiservice
http://gaofeiservice.ctdisk.com
问?:

可以接受多个client. 现在连接正常,可以使用,就是Close();时有问题.

部分代码如下:

public QTCPServer(int port, ExecuteCommand executeCommand) //构造函数,启用监听线程

{

this.sessions = new ArrayList ();

this.sessionThreads = new ArrayList ();

this.executeCommand = executeCommand;

this.open = true;

IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];

IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, port);

this.listener = new TcpListener(ipLocalEndPoint);

this.listener.Start ();

this.server = new Thread ( new ThreadStart ( Run ) );//用来监听的线程;

this.server.Start ();

}

public void Run ()

{

while ( this.open )

{

Socket s=null;

s = this.listener.AcceptSocket();

if (s.Connected)

{

QTCPServerSession session = new QTCPServerSession(s,this.executeCommand);

this.sessions.Add(session);

Thread th = new Thread(new ThreadStart(session.Run)); //在开线程,处理相关事宜.

th.Start();

this.sessionThreads.Add(th);

}

}

}

public void Close ()

{

if ( this.open )

{

this.open = false;

this.listener.Stop();

this.server.Abort ();

this.server.Join();

while (this.sessions.Count > 0)

{

Thread th = (Thread)this.sessionThreads[0];

th.Abort();

th.Join ();

this.sessionThreads.Remove(th);

QTCPServerSession s = (QTCPServerSession)this.sessions[0];

s.Close();

this.sessions.Remove(s);

}

}

}

Close()时,执行到this.server.Abort ();关闭线程时, Run()中的s = this.listener.AcceptSocket();就会报错 "一个封锁操作被对WSACancelBlockingCall的调用中断"

关不掉了.请碰到过此情况的高手指点.

在线.谢谢

答!: 1:

子线程在阻塞式监听, 主线程想stop. 是不是不行?

答!: 3:

楼主使用互斥锁试试

答!: 4:

我发现 s = this.listener.AcceptSocket(); 这句在server线程里.

server.Abort() 都没有用啊

调试要Terminate All时 才会正常退出,否则还是会死在server线程里的this.listener.AcceptSocket. Abort都没有用啊,怎么办?

答!: 5:

解决了

先判断tcpListener.Pending() 在阻塞. 没想到清华大学出的书也害人啊.

此贴就当散分贴吧

人人有分

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/king_idea8848/archive/2009/10/15/4675139.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐