我正在处理一些调用服务的代码。此服务调用可能会失败,如果确实如此,我希望系统重试,直到它正常工作或经过太多时间。
我想知道我哪里出错了,因为以下代码似乎无法正常工作......它随机只执行一到四个循环......
protected virtual void ProcessAsync(object data, int count)
{
var worker = new BackgroundWorker();
worker.DoWork += (sender, e) =>
{
throw new InvalidOperationException("oh shiznit!");
};
worker.RunWorkerCompleted += (sender, e) =>
{
//If an error occurs we need to tell the data about it
if (e.Error != null)
{
count++;
System.Threading.Thread.Sleep(count * 5000);
if (count <= 10)
{
if (count % 5 == 0)
this.Logger.Fatal("LOAD ERROR - The system can't load any data", e.Error);
else
this.Logger.Error("LOAD ERROR - The system can't load any data", e.Error);
this.ProcessAsync(data, count);
}
}
};
worker.RunWorkerAsync();
}
干杯安东尼
更新:
我已经将我的代码切换为使用 ThreadPool.QueueUserWorkItem ......因为这样做我的问题已经消失并且在语义上我可以做同样的事情。感谢您的所有帮助。