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