如何防止在长时间的 COM 操作期间显示 OLE 服务器忙对话框中

本文介绍如何在MFC客户端应用程序中通过调整COM调用的超时时间来避免出现OLE服务器忙对话框。文中提供了具体的API调用方法,帮助开发者解决长时间COM调用导致的应用阻塞问题。
如果调用方法在 COM 服务器上从 MFC COM 客户端应用程序和方法如果需要较长的时间,处理并返回后,您将无法执行任何操作在客户端应用程序和OLE 服务器忙对话框中的 pop。 这篇文章解释了如何提高 COM 调用的超时时间,并还介绍了如何避免出现此对话框。

Collapse image更多信息

确保 MFC 客户端应用程序会调用以初始化 COM. AfxOleInit() 这是重要的因为AfxOleInit()还初始化,并在 CWinApp 中注册的 COleMessageFilter 数据成员。 或者,可以创建您自己的 COleMessageFilter 对象,并在启动过程中注册的。

使用
AfxOleGetMessageFilter()->SetMessagePendingDelay(nTimeout);
				
若要设置传出 COM 调用的等待时间。 如果 COM 调用的时间比 nTimeout 毫秒为单位),然后 MFC 客户端应用程序显示OLE 服务器忙的对话框。

使用,
AfxOleGetMessageFilter()->EnableNotRespondingDialog(FALSE);
				
若要禁用无响应对话框中,如果键盘或鼠标消息处于挂起状态,将显示该期间 OLE 调用,并调用已超时。

使用
AfxOleGetMessageFilter()->EnableBusyDialog(FALSE);
				
若要禁用从 COM 调用后出现的忙对话框超时。

若要禁止显示服务器忙的对话框的另一种方法是在您的应用程序中使用OleInitializeOleUninitialize而不是AfxOleInit 。

Collapse image参考

有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
179692 尝试在 Visual C++ 在 COM 服务器上调用的方法,则会出现 0x80010005 错误的 HRESULT
其他信息,请参阅下面的 Microsoft 开发人员网络 (MSDN) Web 站点:

http://support.microsoft.com/kb/248019/zh-cn
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值