ymm4-plugin-document
読み取り中…
検索中…
一致する文字列を見つけられません
YukkuriMovieMaker.Commons.TaskHelper クラス

非同期タスクに関するヘルパーメソッドを提供します。 [詳解]

静的公開メンバ関数

static async global::System.Threading.Tasks.Task< T > RetryOnExceptionAsync<[global::System.Runtime.CompilerServices.Nullable(2)] T > (global::System.Func< global::System.Threading.Tasks.Task< T > > taskFactory, int retryLimit, global::System.TimeSpan retryDelay, global::System.Func< global::System.Exception, bool > retryPattern, global::System.Action< global::System.Exception, int, global::System.TimeSpan > onPreviewRetryWait, string warningMessage, global::System.Threading.CancellationToken token)
 指定されたファクトリ関数によって生成されるタスクを、例外発生時に指定された回数だけリトライします。

詳解

非同期タスクに関するヘルパーメソッドを提供します。

メソッド詳解

◆ RetryOnExceptionAsync<[global::System.Runtime.CompilerServices.Nullable(2)] T >()

async global.System.Threading.Tasks.Task< T > YukkuriMovieMaker.Commons.TaskHelper.RetryOnExceptionAsync<[global.System.Runtime.CompilerServices.Nullable(2)] T > ( global.System.Func< global.System.Threading.Tasks.Task< T > > taskFactory,
int retryLimit,
global.System.TimeSpan retryDelay,
global.System.Func< global.System.Exception, bool > retryPattern,
global.System.Action< global.System.Exception, int, global.System.TimeSpan > onPreviewRetryWait,
string warningMessage,
global.System.Threading.CancellationToken token )
static

指定されたファクトリ関数によって生成されるタスクを、例外発生時に指定された回数だけリトライします。

テンプレート引数
Tタスクの結果の型。
引数
taskFactory実行するタスクを生成するファクトリ関数。
retryLimitリトライの最大回数。
retryDelayリトライ間の遅延時間。
retryPatternリトライを試みるべき例外を決定する関数。trueを返すとリトライします。
onPreviewRetryWaitリトライ遅延前に呼び出されるアクション。発生した例外、現在のリトライ回数、遅延時間が渡されます。
warningMessageリトライ制限を超えた場合にスローされるWarningExceptionのメッセージ。
token操作をキャンセルするためのCancellationToken。
戻り値
成功したタスクの結果。
例外
OperationCanceledExceptiontoken がキャンセルされた場合にスローされます。
WarningExceptionリトライ制限に達し、かつretryPattern がtrueを返した場合にスローされます。
Exceptionリトライ制限に達する前にretryPattern がfalseを返した場合、またはその他の予期せぬ例外が発生した場合にスローされます。

このメソッドは、ネットワークエラーや一時的なリソースのロックなど、一時的な問題によって失敗する可能性のある操作に特に有用です。 retryPattern を使用することで、特定の種類の例外のみをリトライ対象とすることができます。

async Task<string> GetDataAsync()
{
int attempt = 0;
return await TaskHelper.RetryOnExceptionAsync(
async () =>
{
attempt++;
Console.WriteLine($"Attempt {attempt} to get data...");
// 例として、2回目までの試行では例外をスローします。
if(attempt <= 2)
{
throw new System.Net.Http.HttpRequestException("Network error occurred.");
}
return await Task.FromResult("Data successfully retrieved");
},
retryLimit: 3,
retryDelay: TimeSpan.FromSeconds(1),
retryPattern: ex => ex is System.Net.Http.HttpRequestException, // HttpRequestExceptionの場合のみリトライ
onPreviewRetryWait: (ex, count, delay) => Console.WriteLine($"Retry {count} after {delay.TotalSeconds}s due to: {ex.Message}"),
warningMessage: "Failed to retrieve data after multiple retries.",
token: CancellationToken.None);
}
非同期タスクに関するヘルパーメソッドを提供します。
Definition TaskHelper.cs:14

このクラス詳解は次のファイルから抽出されました:
  • YukkuriMovieMaker.Plugin/YukkuriMovieMaker/Commons/TaskHelper.cs