如何测试 MarshalByRefObject 是否有效?

发布于 2025-01-04 01:31:24 字数 254 浏览 2 评论 0原文

在 VS2010 C# 项目中,我们有一个派生自 MarshalByRefObject 的类,我们使用 Activator.GetObject 来设置它。我们使用这个派生类通过网络与机器通信。

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

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

In a VS2010 C# project we have a class derived from a MarshalByRefObject and we use Activator.GetObject to set it. We are using this derived class to talk to a machine across the network.

Sometimes the target machine is on and able to be pinged but it isn't running the program we want to talk to, this causes a 30 second wait followed by an exception. Is there a way to tell if my derived MarshalByRefObject is valid?

Currently a try/catch is handling this situation, but the 30 second wait is not acceptable.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风向决定发型 2025-01-11 01:31:24

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

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

You could try having a Task call a Ping() method, and use the explicit timeout on the task...

Task task = new Task(() => { try { obj.Ping(); } catch {} });
task.Start();
if(!task.Wait(1000)) throw new TimeoutException();
// handle other task exceptions etc
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文