---
title: "Class TaskRetryHelper | Customer's Canvas On-Premises"
canonical: "https://customerscanvas.com/docs/on-premises/design-atoms-cs/reference/api/Aurigma.DesignAtoms.Common/TaskRetryHelper/"
---

# Class TaskRetryHelper

> **Inheritance:** `System.Object` -> TaskRetryHelper

###### **Namespace**: [Aurigma.DesignAtoms.Common](https://customerscanvas.com/docs/on-premises/design-atoms-cs/reference/api/Aurigma.DesignAtoms.Common.md)

###### **Assembly**: Aurigma.DesignAtoms.dll

```csharp title="Syntax"
public class TaskRetryHelper
```

## Inherited Members

* `System.Object.ToString`
* `System.Object.Equals(System.Object)`
* `System.Object.Equals(System.Object,System.Object)`
* `System.Object.ReferenceEquals(System.Object,System.Object)`
* `System.Object.GetHashCode`
* `System.Object.GetType`
* `System.Object.MemberwiseClone`

## Constructors

### TaskRetryHelper

```csharp
public TaskRetryHelper()
```

## Methods

### RetryOnExceptionAsync&lt;TTask&gt;

```csharp
public static Task<TTask> RetryOnExceptionAsync<TTask>(int retryCount, Func<Task<TTask>> operation, Func<Exception, bool> exceptionChecker = null, TimeSpan[] delays = null, ILogger logger = null)
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `System.Int32` | *retryCount* |  |
| `System.Func<System.Threading.Tasks.Task<<TTask>>>` | *operation* |  |
| `System.Func<System.Exception,System.Boolean>` | *exceptionChecker* |  |
| `System.TimeSpan[]` | *delays* |  |
| `NLog.ILogger` | *logger* |  |

##### Returns

`System.Threading.Tasks.Task<<TTask>>`

### RetryOnExceptionAsync&lt;TTask&gt;

```csharp
public static Task<TTask> RetryOnExceptionAsync<TTask>(int retryCount, Func<Task<TTask>> operation, Func<Exception, int?> getStatusCodeFunc = null, TimeSpan[] delays = null, ILogger logger = null)
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `System.Int32` | *retryCount* |  |
| `System.Func<System.Threading.Tasks.Task<<TTask>>>` | *operation* |  |
| `System.Func<System.Exception,System.Nullable<System.Int32>>` | *getStatusCodeFunc* |  |
| `System.TimeSpan[]` | *delays* |  |
| `NLog.ILogger` | *logger* |  |

##### Returns

`System.Threading.Tasks.Task<<TTask>>`

### RetryOnExceptionAsync&lt;TTask, TException&gt;

```csharp
public static Task<TTask> RetryOnExceptionAsync<TTask, TException>(int retryCount, Func<Task<TTask>> operation, Func<TException, bool> exceptionChecker = null, Func<TException, int?> getStatusCodeFunc = null, TimeSpan[] delays = null, ILogger logger = null)
    where TException : Exception
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `System.Int32` | *retryCount* |  |
| `System.Func<System.Threading.Tasks.Task<<TTask>>>` | *operation* |  |
| `System.Func<<TException>,System.Boolean>` | *exceptionChecker* |  |
| `System.Func<<TException>,System.Nullable<System.Int32>>` | *getStatusCodeFunc* |  |
| `System.TimeSpan[]` | *delays* |  |
| `NLog.ILogger` | *logger* |  |

##### Returns

`System.Threading.Tasks.Task<<TTask>>`

### GetRequestTaskFactory&lt;T&gt;

```csharp
public static Func<Task<T>> GetRequestTaskFactory<T>(Func<Task<T>> func)
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `System.Func<System.Threading.Tasks.Task<<T>>>` | *func* |  |

##### Returns

`System.Func<System.Threading.Tasks.Task<<T>>>`
