如何测试MarshalByRefObject是否有效?

时间:2012-02-10 17:42:06

标签: c# activator marshalbyrefobject

在VS2010 C#项目中,我们有一个派生自MarshalByRefObject的类,我们使用Activator.GetObject来设置它。我们正在使用此派生类与网络上的计算机进行通信。

有时目标计算机已打开且能够被ping,但它没有运行我们想要与之通信的程序,这导致等待30秒,然后是异常。有没有办法判断我的派生MarshalByRefObject是否有效?

目前try / catch正在处理这种情况,但是30秒的等待是不可接受的。

1 个答案:

答案 0 :(得分:4)

你可以尝试让Task调用一个Ping()方法,并在任务上使用显式超时......

Task task = new Task(() => { try { obj.Ping(); } catch {} });
task.Start();
if(!task.Wait(1000)) throw new TimeoutException();
// handle other task exceptions etc