MarshalByRefObject导致C ++程序挂起

时间:2017-01-31 17:50:40

标签: c++-cli marshalbyrefobject

我有一个客户端程序,它使用MarshalByRefObject从远程服务器获取变量。有时程序在远程服务器上占用,当我尝试获取该变量时,我的客户端程序就会挂起。有没有办法超时调用这个变量?

MyClass^ refObject = (MyClass^)System::Activator::GetObject(MyClass::typeid, url);

THEVARIABLE objectVariable = refObject->theVariable;

1 个答案:

答案 0 :(得分:0)

我看到的唯一方法是实现IMessageFilter(COM)。在某些情况下,可以检测到从当前STA到另一个STA的进程外调用。但AFAIK只有在输入消息(键盘/鼠标)到达时才会这样做。

使用消息过滤器,您可以显示类似“等待外部COM调用...”的内容。同样在这种情况下,您可以中止外部呼叫。

请参阅CoRegisterMessageFilter和IMessageFilter