59

サービスを正常にシャットダウンできるように、渡されるキャンセル トークンを使用します。サービスには、他のサービスへの接続を試行し続けるロジックがあるため、トークンは、個別のスレッドで実行されているこれらの再試行ループから抜け出すための優れた方法です。私の問題は、内部再試行ロジックを持つサービスを呼び出す必要があるが、再試行が失敗した場合は一定期間後に戻る必要があることです。これを行うタイムアウト付きの新しいキャンセルトークンを作成したいと思います。これに関する問題は、新しいトークンが「マスター」トークンにリンクされていないため、マスター トークンがキャンセルされた場合、新しいトークンはタイムアウトするか、接続が確立されて戻るまで有効です。私がやりたいのは、2 つのトークンをリンクして、マスター トークンがキャンセルされると新しいトークンもキャンセルされるようにすることです。使ってみたCancellationTokenSource.CreateLinkedTokenSourceメソッドですが、新しいトークンがタイムアウトすると、マスター トークンもキャンセルされます。トークンを使用して必要なことを行う方法はありますか、または再試行ロジックを変更する必要がありますか (おそらくこれを簡単に行うことはできません)

これが私がやりたいことです:

マスター トークン – サービスが正常にシャットダウンできるように、さまざまな関数を渡します。一時トークン – 単一の関数に渡され、1 分後にタイムアウトに設定されます

マスタートークンがキャンセルされた場合、一時トークンもキャンセルする必要があります。

一時トークンの有効期限が切れた場合、マスター トークンをキャンセルしてはなりません。

4

4 に答える 4