Sic.Framework-Nanjing-Baishi/MECF.Framework.Common/Aitex/Core/Utilities/Retry.cs

53 lines
753 B
C#

using System;
using System.Threading;
namespace Aitex.Core.Utilities
{
public class Retry
{
private bool _result = false;
private int _retryTime = -1;
public bool IsSucceeded { get; set; }
public bool IsErrored { get; set; }
public bool Result
{
get
{
return _result;
}
set
{
if (value)
{
IsSucceeded = !_result;
IsErrored = false;
}
else
{
IsErrored = _result || _retryTime == -1;
IsSucceeded = false;
}
_result = value;
_retryTime = ++_retryTime % 100;
}
}
public void Do(Func<bool> function, int time)
{
for (int i = 0; i < time; i++)
{
if (function())
{
Result = true;
}
Thread.Sleep(10);
}
Result = false;
}
}
}