ldcsaa/HP-Socket

在DLL中使用HP-Socket时退出DLL时卡死

sinfee opened this issue · 3 comments

sinfee commented

在规则DLL中使用HP-Socket时,退出DLL时,设置了在ExitInstance函数中退出连接,调用CTcpClientPtr对象的Stop()时无法成功退出。
中断后发现函数是在WaitForMultipleObjectsWithMessageLoop中的::MsgWaitForMultipleObjects 中。

请问应该如何解决呢?

ldcsaa commented

你这应该是在socket线程中调用stop了。
可以通过组件的析构函数自动断开连接。

sinfee commented

感谢指导。我是在一个DLL中使用HP-Socket并封装成导出的C方式函数,这个DLL是嵌入在其他应用程序中调用的,所以主程序是否在线程中调用DLL中的输出函数是没办法限制和更改调用方式的。这种方式应该如何使用HP-Socket呢?

ldcsaa commented

试试在 DllMain() 的 DLL_PROCESS_DETACH 事件中执行Stop。