2014-04-25 158 views
1

我們有1-2個工作者,其中有5個線程,每個線程從Azure隊列讀取郵件並進行長時間處理,每個處理可能需要大約1-2個小時。我們想要實現邏輯來停止特定工作者角色的特定線程。用戶將提交取消特定處理的請求。我們正在我們的天藍色表中保存工作者角色和線索信息。但是我們堅持實施阻止正在處理的特定工作者角色的線程。任何人都可以給出一些想法/設計來阻止特定工作者的特定線程。我們可以利用線程的取消標記來停止線程。請幫助我們停止工作角色的線程。如何停止Azure工作者角色

回答

1

您將需要某種標誌。所以無論是一個新的隊列被監控或數據庫更新。

然後在監視這些取消消息/標誌的工作角色中啓動一個新線程,選擇正確的線程並將其停止。

我不會推薦在正在處理的線程中做任何事情,因爲它會減慢你的工作,但是如果你的線程有一個OnStop方法,你可以使用它在關閉線程之前收拾線程。

+0

謝謝亞當。你的方法給了我方向。但是我不知道abt「如果你的線程有一個OnStop方法,你可以用它來關閉線程之前關閉線程。」你說abt在線程取消? ...我的另一個問題是,如果我們有2個工人角色,工人角色的線程可以關閉。你的方法是完美的如果它是同一個工作者角色。 – user145610

+0

在每個工作者角色上,您將需要啓動這些線程。保持對這些線程的引用。我之前通過使用列表來保留它們。在這個線程之外有另一個線程運行來監視數據庫中的標誌。一旦它檢測到一個標誌停止線程,你可以調用一個Thread.Abort(); –

+0

感謝Adam。讓我嘗試 – user145610

相關問題