2017-10-18 16 views
1

サービスファブリッククラスタには、RunAsyncメソッドでwhileループが継続的に実行されるステートレスサービスがあります。このwhileループのため、私はクラスタからアプリケーションを削除するのが難しいと感じています。エラーは、私がprocess.Normally私は一度コードを削除するアプリケーションを展開しようとするとデタッチすることはできませんを削除しようとするたびに発生します。アプリケーションの上にコードを再デプロイするには、2回展開する必要があります。無限のwhileループを削除せずにこれに対処する方法がありますか?更新サービスファブリッククラスタでステートレスサービスを削除中にエラーが発生しました

:Runasync方法

protected override async Task RunAsync(CancellationToken cancellationToken) 
    { 
     //making sure the thread is active 
     while (true) 
     { 
      do something; 
     } 

    } 

を入力いただき、ありがとうございます。

+0

あなたはここであなたのRunAsync方法は、より良く理解するために追加できますか? –

+0

私はRunasyncメソッドを追加しました。 – user3530857

答えて

2

シャットダウン時に、RunAsyncに渡されたキャンセルトークンがキャンセルされます。 メインループ内のキャンセルトークンのIsCancellationRequestedプロパティを確認する必要があります。これが真になり、呼び出された場合、トークンのThrowIfCancellationRequestedメソッドはOperationCanceledExceptionをスローします。

サービスがこれらのAPI呼び出しに適切な時間内に応答しない場合、Service Fabricはサービスを強制終了できます。通常、これはアプリケーションのアップグレード中またはサービスの削除中にのみ発生します。このタイムアウトはデフォルトで15分です。

は良い参考のために、このドキュメントを参照してください。https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-lifecycle#stateless-service-shutdown

関連する問題