【发布时间】:2017-03-01 15:37:35
【问题描述】:
我有一个 C# Winforms 程序将订单数据发送到第 3 方 API。该程序在服务器上运行,并有一个计时器来检查每 10 秒发送到 API 的数据。
我的问题是有时第 3 方的服务器出现故障。发生这种情况时,我不希望我的程序尝试发送数据,然后创建一封电子邮件给用户,告诉他们他们的销售订单每 10 秒失败一次。
这是我设置计时器并每 10 秒调用一次作业的代码:
private static void SetTimer()
{
aTimer = new System.Timers.Timer(10000);
aTimer.Elapsed += OnTimedEvent;
aTimer.AutoReset = true;
aTimer.Enabled = true;
}
工作本身并不重要,它运行起来没有问题。
如果 API 没有响应,我会收到 500 到 503 之间的错误,所以我写了这个:
if (statusCode > 500 || statusCode < 504)
{
aTimer.Enabled = false;
System.Threading.Thread.Sleep(600000);
aTimer.Enabled = true;
return;
}
else
{
// This will post the migration status for anything EXCEPT a server failure
PostMigrationStatus(DocEntry, JobSuccess, jobID);
}
错误处理不起作用,似乎在遇到 500-503 错误后,作业再也不会开始了。
有什么想法吗?
【问题讨论】: