サービスを呼び出すいくつかのコードに取り組んでいます。このサービス コールは失敗する可能性があります。失敗した場合は、システムが機能するか時間が経過するまで再試行する必要があります。
次のコードが正しく機能していないように見えるため、どこが間違っているのか疑問に思っています...ランダムに1〜4回のループしか行いません...
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 を使用するようにコードを切り替えました...これを行ってから、問題はなくなり、意味的には同じことができます。助けてくれてありがとう。