我在寫一個響應IMAP推送通知的Windows服務。收到通知時,我使用ThreadPool
排隊用戶工作項目。 (它調用的方法把一些東西放入數據庫等等)。檢查線程池是否有任何活動線程
在某些時候,我想停止我的服務,這將停止排隊其他線程ThreadPool
,並等待,直到沒有開放的線程正在工作。
//Pseudo code
public void StopService()
{
while (true)
{
if (ThreadPool.ActiveThreads == 0)
{
//disconnect imap
//stop service
}
}
}
更妙的是一種方式來告訴大家,我想通知它沒有活動線程,這樣我就不必輪詢它在一個while循環的ThreadPool
。
This question使用線程安全計數器是一種方法來確定線程池是否有任何打開的線程,但肯定必須有一個標誌或ThreadPool
類的某些方法/屬性來確定此?
那不是你正在運行的代碼可以在活動線程線程池? – krillgar
當然,爲什麼不呢?我寫了Pseudo代碼是爲了一個理由,它是爲了幫助我想象我寫的東西。 –
嗯,我只是想,這將是你永遠不會進入你的'if'聲明並停止服務的原因。 – krillgar