关于COM中的异步方法...

JerKii 2005-05-17 09:09:12
我在一个COM组件(这里我实现的是一个进程外组件)中实现了一个文件下载功能,该功能在每次接收到数据后都会通过指定的事件通知客户端程序,但是这个下载过程通常需要很长时间,虽然我的客户端程序在下载过程中能正确接收到相应的事件,但是,在下载过程中,客户端却不能做其他事情了,当点击客户端界面上的任何地方时,系统都会弹出一个"Component request pending"对话框(上面有三个按钮:Switch to ..., Retry, Cancel)....

我想,出现该对话框并且导致我的客户端程序"停滞"的原因主要是我是通过同步方式调用组件中的方法的,如果使用异步方式调用,是不是就可以解决问题呢? 如果可以,怎样才能做到异步调用??
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongfa 2005-05-17
  • 打赏
  • 举报
回复
1:使用连接点.
2:socket(udp)
3.管道
4.发送消息. WM_COPYDATE
JerKii 2005-05-17
  • 打赏
  • 举报
回复
??
JerKii 2005-05-17
  • 打赏
  • 举报
回复
大家可参考这篇文章:http://support.microsoft.com/kb/q206076/
JerKii 2005-05-17
  • 打赏
  • 举报
回复
目前我使用了以下方式解决这个问题,但是不知道该方法是否存在一些弊病...
即在组件中使用一个单独的新线程来实现那个下载方法,但是,使用新的线程的话,就会涉及到部分接口的Marshal和Unmarshal,虽然复杂点,但是能达到我的要求,这也许算是个"伪异步方法"吧...
JerKii 2005-05-17
  • 打赏
  • 举报
回复
还要使用socket? 其他方法呢? 或者详细描述一下啊...

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧