Retry with Task and Async

Scenario:

Post data asynchronously. If it fails retry.

Solution:

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      private async Task<Tuple<bool, string>> PostAsync<T>(T data, int? retry = null)
      {
          var retryAttempt = retry ?? retryConfig;
               
          try
          {
              await Post(data).ConfigureAwait(false);
              return new Tuple<bool, string>(true, default(string));
          }
          catch (Exception e)
          {
              if (retryAttempt > 0)
              {
      #pragma warning disable 4014
                  Task.Run(async () =>
                  {
                      await Task.Delay(TimeSpan.FromMilliseconds(ConfigRetryDelay));
                      await PostAsync(data, --retryAttempt);
                  });
      #pragma warning restore 4014
              }
              return new Tuple<bool, string>(false, errorMessage);
          }
      }

No comments:

Post a Comment

Move Github Sub Repository back to main repo

 -- delete .gitmodules git rm --cached MyProject/Core git commit -m 'Remove myproject_core submodule' rm -rf MyProject/Core git remo...