我有一个对话框程序,我开了一个线程,线程函数中侦听某个端口.用的是mfc提供的CSocket类
我的线程函数是全局函数
CSocket charsend;//全局变量
CSocket  server//全局变量
对话框上有一个停止侦听按钮,我想通过他来调用charsend.close()server.close()
但是会报错.
如果将charsend.close()server.close()放入线程函数中就不会,请问怎么回事啊???

解决方案 »

  1.   

    你用按钮调用close,实际上是在侦听线程外把socket关闭了,但是侦听线程并不知情,仍然试图通过这个已经关闭的socket进行操作,所以会报错。
      

  2.   

    最好加条件 关闭的时候把socket指针置为NULL,在任何地方都加判断,若指针不为NULL,则关闭,指针置NULL,这样肯定是安全了
      

  3.   

    PostThreadMessage 可以给线程发送消息。
      

  4.   

    用PostThreadMessage可以给线程发消息,现在的问题是我的线程要处理收到的消息请问怎样做?即我怎样把消息处理函数嵌入到线程里面去??最好能详细点,先谢谢了.
      

  5.   

    你的Socket是哪个线程打开的必须用改线程关闭!主动关闭时可以直接close,你可以试试派生一个Socket类
      

  6.   

    必须在本线程关闭我知道了,但是我项通过消息来通知本线程关闭.请问
    用PostThreadMessage给线程发消息,我的线程要处理收到的消息请问怎样做?即我怎样把消息处理函数嵌入到线程里面去??最好能详细点,先谢谢了.