关于CAsyncSocket在多线程中的使用问题!请SOCK高手帮忙!!谢谢大家!
我知道CAsyncSocket、CSOCK之类MFC封装的SOCK类不是线程安全性的。下次一定用API来实现了。不过现在代码做了很多了,所以还是请大家帮忙!
情况这样的:
一、我在主EXE程序中用Loadlibrary调用一个DLL中的方法。同时是在EXE中启动了一个新的线程来调用这个DLL中的方法。
二、在这个DLL的方法中使用了基于CAsyncSocket的对象,我这里做的是SOCK客户端,所以用了CAsyncSocket.create()、Connect()方法来创建。
三、使用正常。我也能在CAsyncSocket的派生类中收到OnCreate和OnConnect事件。
四、为了保证长连接,我不会在这个线程结束时关闭SOCK,下次再调用DLL时再次收发就可以了。
五、问题现在是无论我在哪里主动Close()这个SOCK对象,总是会失败。好象这个SOCK对象是创建了一个CSockLisen窗口。每次都是HANDLE不对。
六、但是如果服务器断开无论何时,系统主动触发的OnClose()消息都能正确释放SOCK。
我想问的是,我如何主动安全释放在多线程中创建的异步SOCK?或者说我如何给这个SOCK窗口(CSockLisen)发消息,让它主动释放。
我知道这个问题有点难,所以如果真有能帮助到我或有好的建议的!谢谢大家了!共同进步!