2017-10-18 150 views
1

在服務Fabric羣集中,我有一個無狀態的服務,它有一個在RunAsync方法中持續運行的while(true)循環。由於這個while循環,我發現很難從集羣中刪除應用程序。每次嘗試刪除說明時都會發生錯誤,無法分離進程。正常情況下,我嘗試部署應用程序一次以刪除代碼。要重新部署應用程序頂部的代碼,我必須部署兩次。有沒有解決這個問題,而無需刪除無限while循環。刪除服務Fabric羣集中的無狀態服務時出錯

更新時間:

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

    } 

Runasync方法謝謝你的輸入。

+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