基本上 - 我們編寫單元測試。有時這些單元測試會啓動線程 - 並且通常會在線程池中啓動任務。如果後臺線程出現問題 - 可能會導致測試出現未來的奇怪問題。我們要在每個測試的基礎拆機做的基本上是c#線程池和其他線程的檢查
- 檢查什麼的線程運行
- 如果正在運行測試失敗不應該是
現在,對於正常線程,我們可以先手動列舉,然後再比較 - 這很好。線程池弄糟了 - 因爲可能有許多有效創建的新線程,它們只是在等待什麼都不做 - 這很好。如果測試讓一些東西繼續運行就不好。還請記住 - 我不寫測試或代碼被測試 - 我正在編寫底層庫,以確保沒有其他人可以搞砸了,但他們努力嘗試 - 所以我不能嘗試使用我自己的實現一個線程池或類似的東西,因爲我不能確定有人不使用標準的。
任何人都可以想出一種方法來告訴線程池擁有哪些線程,以及它們是否空閒?我的下一步是用反射尋找私有變量 - 但我希望有人有更好的方法?
感謝, 達倫
ThreadPool.GetAvailableThreads(),與GetMaxThreads()比較。當代碼離開tp線程時,你可能應該通過測試,這在生產中不太可能達到一個好結果。 –