件内使用阻塞套接字,并创建一个线程接收数据。请问我能否在COM一被调用时就创建SOCKET与EXE通讯,然后立马启动一个线
程来接收数据?然后在COM被销毁的时候关闭SOCKET并退出线程,这样就不会造成上层应用卡住之类的麻烦问题。谁能给个好的
思路
6 个解决方案
#1
可以通过回调的方式来解决问题.
当线程接收数据成功之后再通知上层应用,并关闭线程.运用层相应这个事件,并向控件中读取这个数据,然后销毁组件.
当线程接收数据成功之后再通知上层应用,并关闭线程.运用层相应这个事件,并向控件中读取这个数据,然后销毁组件.
#2
通迅与COM也没有什么必然的关系,COM只是对象与方法的封装.
把socket封装到COM里,引出接口就可以了.注意接收到数据时用回调.
把socket封装到COM里,引出接口就可以了.注意接收到数据时用回调.
#3
tttyd saiyaman5 你们好 感谢你们的回复 你们说接收到数据用回调是什么意思?我本来想开个线程
线程里面
while(线程启用标志)
{
//接收数据
//如果有数据,拆包,然后fire_相应事件
}
你们说的回调是不是这个意思?
线程里面
while(线程启用标志)
{
//接收数据
//如果有数据,拆包,然后fire_相应事件
}
你们说的回调是不是这个意思?
#4
另外问下,我写的COM组件 注册成功后在我机器上面用ActiveX Control Test Container 看不到 但是在别人机器上面看的到 这个是怎么回事?
#5
对,当然也可以在线程中回调
#6
应用程序调用com接口异步操作,就不会阻塞
#1
可以通过回调的方式来解决问题.
当线程接收数据成功之后再通知上层应用,并关闭线程.运用层相应这个事件,并向控件中读取这个数据,然后销毁组件.
当线程接收数据成功之后再通知上层应用,并关闭线程.运用层相应这个事件,并向控件中读取这个数据,然后销毁组件.
#2
通迅与COM也没有什么必然的关系,COM只是对象与方法的封装.
把socket封装到COM里,引出接口就可以了.注意接收到数据时用回调.
把socket封装到COM里,引出接口就可以了.注意接收到数据时用回调.
#3
tttyd saiyaman5 你们好 感谢你们的回复 你们说接收到数据用回调是什么意思?我本来想开个线程
线程里面
while(线程启用标志)
{
//接收数据
//如果有数据,拆包,然后fire_相应事件
}
你们说的回调是不是这个意思?
线程里面
while(线程启用标志)
{
//接收数据
//如果有数据,拆包,然后fire_相应事件
}
你们说的回调是不是这个意思?
#4
另外问下,我写的COM组件 注册成功后在我机器上面用ActiveX Control Test Container 看不到 但是在别人机器上面看的到 这个是怎么回事?
#5
对,当然也可以在线程中回调
#6
应用程序调用com接口异步操作,就不会阻塞