1

我有一个在服务器中运行的 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
        }
    }
}
4

1 回答 1

1

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

我相信这应该可以解决问题。

于 2014-09-12T20:52:22.820 回答