如果调用方法在 COM 服务器上从 MFC COM 客户端应用程序和方法如果需要较长的时间,处理并返回后,您将无法执行任何操作在客户端应用程序和OLE 服务器忙对话框中的 pop。
这篇文章解释了如何提高 COM 调用的超时时间,并还介绍了如何避免出现此对话框。
更多信息
确保 MFC 客户端应用程序会调用以初始化 COM. AfxOleInit()
这是重要的因为AfxOleInit()还初始化,并在 CWinApp 中注册的 COleMessageFilter 数据成员。
或者,可以创建您自己的 COleMessageFilter 对象,并在启动过程中注册的。
使用
若要设置传出 COM 调用的等待时间。
如果 COM 调用的时间比 nTimeout 毫秒为单位),然后 MFC 客户端应用程序显示OLE 服务器忙的对话框。
使用,
若要禁用无响应对话框中,如果键盘或鼠标消息处于挂起状态,将显示该期间 OLE 调用,并调用已超时。
使用
若要禁用从 COM 调用后出现的忙对话框超时。
若要禁止显示服务器忙的对话框的另一种方法是在您的应用程序中使用OleInitialize和OleUninitialize而不是AfxOleInit 。
使用
AfxOleGetMessageFilter()->SetMessagePendingDelay(nTimeout);
使用,
AfxOleGetMessageFilter()->EnableNotRespondingDialog(FALSE);
使用
AfxOleGetMessageFilter()->EnableBusyDialog(FALSE);
若要禁止显示服务器忙的对话框的另一种方法是在您的应用程序中使用OleInitialize和OleUninitialize而不是AfxOleInit 。
参考
有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
179692
尝试在 Visual C++ 在 COM 服务器上调用的方法,则会出现 0x80010005 错误的 HRESULT
其他信息,请参阅下面的 Microsoft 开发人员网络 (MSDN) Web 站点:
http://support.microsoft.com/kb/248019/zh-cn