从C ++设置OLE请求超时

时间:2008-11-11 20:48:18

标签: c++ com ole

我正在使用CoCreateInstance实例化本地COM服务器。有时,提供服务器的应用程序需要很长时间才能启动。发生这种情况时,Windows会弹出如下对话框:

服务器忙

由于其他程序正忙,无法完成操作。选择“切换到”以激活忙碌程序并更正问题。

[切换到...] [重试] [取消]

我在Application对象OleRequestPendingTimeout上发现了一个Visual Basic属性,可用于控制此对话框出现之前的时间。我找不到任何关于这个的好文档或者从C ++中有用的等价文档。有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:8)

如果你正在使用MFC,我们曾经做过这样的事情:

// prevent the damned "Server Busy" dialog.
AfxOleGetMessageFilter()->EnableBusyDialog(0);
AfxOleGetMessageFilter()->EnableNotRespondingDialog(0); 

答案 1 :(得分:4)

查看IMessageFilterCoRegisterMessageFilter

答案 2 :(得分:3)

增加超时呼叫:

AfxOleGetMessageFilter()->SetMessagePendingDelay(nTimeout);

请参阅此处的详细信息How to prevent the OLE Server Busy dialog box from appearing during a lengthy COM operation