我正在开发一个使用.net远程处理IPC的应用程序。
当我的客户端应用启动时,它使用以下代码连接到服务器:
chnl = gcnew HttpChannel();
ChannelServices::RegisterChannel(chnl, false);
IPCObjectInstance = (BaseRemoteObject)Activator.GetObject(
typeof(BaseRemoteObject),
"http://localhost:1237/MyRemoteObject.soap");
而且,当我进行函数调用时,我使用以下代码:
BaseRemoteObject.GetFileTextDelegate svd = new BaseRemoteObject.GetFileTextDelegate(IPCObjectInstance, BaseRemoteObject.GetFileText);
AsyncCallback callback = new AsyncCallback(this, &ClientGUI.RecievedStringText);
IAsyncResult arValSet = svd.BeginInvoke(callback, null);
此代码原样很棒。但是,我希望我的客户端在启动时检测服务器是否正在运行,并显示相应的错误消息。
当服务器未运行时,客户端会等待大约3秒钟,然后再抛出Web异常(如下图所示)。没有错误“位置”,所以我不确定将try \ catch块放在何处。
检测我的服务器没有运行的最佳方法是什么?
谢谢!
答案 0 :(得分:1)
应该尝试/抓住BeginInvoke
行。
但我的建议是创建一个Status
方法,你可以同步调用而不是异步,并尝试/捕捉该调用。它可以是一种无效的虚拟方法。
还可以在指定的端口上打开与远程服务器的tcp连接,并查看是否有连接。但这就像试试/捕捉远程呼叫一样。