在VS2010 C#项目中,我们有一个从MarshalByRefObject派生的类,我们使用Activator.GetObject来设置它。我们正在使用这个派生类通过网络与机器通信。
有时,目标机器是打开的,并且能够被pinged到,但是它没有运行我们想要与之对话的程序,这会导致30秒的等待,然后是一个异常。有没有办法判断我的派生MarshalByRefObject是否有效?
目前,try/catch正在处理这种情况,但30秒的等待是不可接受的。
发布于 2012-02-11 01:51:05
您可以尝试让Task调用Ping()方法,并对任务使用显式超时...
Task task = new Task(() => { try { obj.Ping(); } catch {} });
task.Start();
if(!task.Wait(1000)) throw new TimeoutException();
// handle other task exceptions etchttps://stackoverflow.com/questions/9232265
复制相似问题