我有一个客户端程序,它使用MarshalByRefObject从远程服务器获取变量。有时程序在远程服务器上占用,当我尝试获取该变量时,我的客户端程序就会挂起。有没有办法超时调用这个变量?
MyClass^ refObject = (MyClass^)System::Activator::GetObject(MyClass::typeid, url);
THEVARIABLE objectVariable = refObject->theVariable;
答案 0 :(得分:0)
我看到的唯一方法是实现IMessageFilter(COM)。在某些情况下,可以检测到从当前STA到另一个STA的进程外调用。但AFAIK只有在输入消息(键盘/鼠标)到达时才会这样做。
使用消息过滤器,您可以显示类似“等待外部COM调用...”的内容。同样在这种情况下,您可以中止外部呼叫。
请参阅CoRegisterMessageFilter和IMessageFilter