0

我正在开发一个使用 .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 块。

检测我的服务器未运行的最佳方法是什么?

谢谢!

4

1 回答 1

1

它应该可以围绕您的BeginInvoke生产线进行尝试/捕捉。

但我的建议是创建一个Status同步调用而不是异步调用的方法,然后尝试/捕获该调用。它可以是一个什么都不做的虚拟方法。

也可以在指定的端口上打开到远程服务器的 tcp 连接,看看你是否获得了连接。但这很像尝试/捕获远程调用。

于 2010-08-03T19:33:30.430 回答