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