C# retry logic (반복실행 로직 예제 소스)

C# retry logic (반복실행 로직 예제 소스)


정말 괜찮은 C# Retry Logic가 있어서 소개합니다. 출처는 스택오버플로이고 사용법은 간단합니다.



csharp[C# retry logic (반복실행 로직 예제 소스)]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public static class Retry
{
   public static void Do(
       Action action,
       TimeSpan retryInterval,
       int retryCount = 3)
   {
       Do<object>(() => 
       {
           action();
           return null;
       }, retryInterval, retryCount);
   }
 
   public static T Do<T>(
       Func<T> action, 
       TimeSpan retryInterval,
       int retryCount = 3)
   {
       var exceptions = new List<Exception>();
 
       for (int retry = 0; retry < retryCount; retry++)
       {
          try
          { 
              if (retry > 0)
                  Thread.Sleep(retryInterval);
              return action();
          }
          catch (Exception ex)
          { 
              exceptions.Add(ex);
          }
       }
 
       throw new AggregateException(exceptions);
   }
}
cs


위에 소개된 C# Retry Logic (반복 실행) 사용 방법은 3가지입니다.


1
2
3
//방법 1.
Retry.Do(() => 
    SomeFunctionThatCanFail(), TimeSpan.FromSeconds(1));
cs


1
2
// 방법2.
Retry.Do(SomeFunctionThatCanFail, TimeSpan.FromSeconds(1));
cs


1
2
3
int result = 
    Retry.Do(SomeFunctionWhichReturnsInt, 
            TimeSpan.FromSeconds(1), 4);
cs


사용하려면 async 클래스를 오버로드합니다.


C# retry logic (반복실행 로직 예제 소스)

댓글(0)

Designed by JB FACTORY