获取ConnectFailure后,如何连接到WCF



我有一个WCF服务在服务器上运行,还有一个Windows应用程序,它每30秒有一个计时器,通过WCF检查数据库中的一些新闻值。

一切都很顺利,但如果我的服务器(当WCF运行时)因某种原因脱机或退出,我会得到异常System.Reflection.TargetInvocationException或System.Net.WebExceptionStatus.ConnectFailure.

我想要的是,好吧,我的计时器每30秒就会检查一次,当我的服务器回来时,我想重新建立连接。实际上,唯一的方法就是关闭并打开WinForm应用程序。

如何在不关闭应用程序的情况下检查连接是否已恢复或重新连接?

public MyClass()
{
 proxy = new TaskService.Service1Client();
 proxy.GetTarefasCompleted += new EventHandler<GetTarefasCompletedEventArgs>
(proxy_GetTarefasCompleted);
timer = new System.Threading.Timer(Callback, null, 0, 30000);
}
 private void Callback(Object state)
 {
   timer.Change(30000, Timeout.Infinite);
   proxy.GetTarefasAsync(Environment.UserDomainName, Environment.UserName);
 }
void proxy_GetTarefasCompleted(object sender, GetTarefasCompletedEventArgs e)
{
  try
    {
      tarefas = e.Result.OrderByDescending(t => t.Id).ToList();
      //code code code
     }
   catch (Exception ex)
   {
    if (ex.GetType().ToString() == "System.Net.WebExceptionStatus.ConnectFailure" ||
        ex.GetType().ToString() == "System.Reflection.TargetInvocationException")
        {
                    //treat the error
        }
    }
}

if (proxy.State != System.ServiceModel.CommunicationState.Opened) { proxy.Abort(); proxy.Open(); }

我相信这应该奏效。

相关内容

  • 没有找到相关文章

最新更新