2008-11-13 64 views
4

我有一个对象在主机应用程序中创建,并可以远程访问它,有没有什么办法可以测试连接以确保它仍然“活着”?如果远程连接断开连接,或者可以告诉我远程连接状态的某个属性,我可以使用该事件触发事件。有没有这样的东西可用?如何测试远程连接(检查状态)

回答

8

我通常添加另一个方法到远程服务器MarshallByRef类, (我一般命名为中国平安(),如:

public void Ping() {} 

,什么也不做,并且没有返回值。然后,以“测试”我的连接,我称这种方法...如果它抛出一个System.Net.Sockets.Exception,我已经失去了连接....

+0

谢谢,我想你验证了我的怀疑,即在框架中没有设施来给我这个功能。这个ping方法应该可以正常工作。谢谢 – Jeremy 2008-11-13 18:12:53

5

你有什么好处检查连接?即使你ping它,但这并不意味着在您下次进行远程通话时,连接仍然存在。

只要尝试/抓住你远程调用,你就会知道。

这种类型的检查是没有意义的(网络连接,文件锁定等)。由于检查后您检查的物品状态可能会立即发生变化。你只是托盘,如果失败,清理/重试。

+0

因为我正在远程处理的对象托管在Windows应用程序中。如果应用程序没有运行,我希望能够重新启动它。 – Jeremy 2008-11-13 19:09:16