AspNet CoreプロジェクトでHangfireを使用して、いくつかのバックグラウンドジョブを実行しています。サーバーを再起動すると、新しいバックラウンドジョブがキューに入れられて処理されますが、以前のすべてのバックグラウンドジョブは処理または再起動を継続します。古い処理バックグラウンドジョブをすべてデータベースから削除しましたが、何も変更されていません。この削除されたジョブはデータベースから削除されましたが、まだ処理中です。データベースに反映されていないすべての処理バックグラウンドジョブを停止して削除するにはどうすればよいですか?
まず、キャンセルトークンを使用する必要があります。ジョブでは、IJobCancellationTokenオブジェクトを引数として他の引数に沿って渡します。
public void MyJob( <<other args>>, IJobCancellationToken cancellationToken)
{
for (var i = 0; i < Int32.MaxValue; i++)
{
cancellationToken.ThrowIfCancellationRequested();
Thread.Sleep(TimeSpan.FromSeconds(1));
}
}
ジョブをキューに入れるには、IJobCancellationTokenをnullとして渡します。
string jobID = BackgroundJob.Enqueue(() => MyJob(<<other args>>, JobCancellationToken.Null));
ここで、ジョブをキャンセルして削除するには、コードを使用して実行します。
BackgroundJob.Delete(jobID);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加