2011-03-16 30 views
0

我有一個庫來管理構建在.NET 3.5上的線程。當我嘗試將其升級到.NET 4.0時,根據Thread.Abort方法,某些單元測試失敗。線程中止狀態問題

簡而言之,這些單元測試將從創建到停止跟蹤線程狀態。當線程正在中止時,這些單元測試會跟蹤狀態,從運行 - >中止請求 - >中止 - >已停止。使用VS2008或VS2010,該序列在.NET 3.5上完全相同。直到我將其升級到VS2010上的.NET 4.0之後,單元測試失敗。結果是線程保持中止狀態。

我已經檢查MSDN有關Thread.Abort的,這裏是的話,「中止後,在一個線程調用線程的狀態包括AbortRequested後的線程終止作爲一個成功的調用的結果中止,線程的狀態更改爲已停止。

有沒有人有同樣的問題? .NET 4.0線程行爲是否正確?如果線程處於中止狀態,它是否有任何影響?

回答

2

我重播。繼續,並假設它是一個錯誤修復。讓狀態回到停止狀態沒有多大意義。

有一箇舊的反饋報告about it here。他們承認.NET 2.0中的行爲與記錄的行爲不匹配,但解決問題爲時已晚。雖然封閉,但我強烈懷疑他們將其固定爲4.0。具有諷刺意味的是,它看起來像記錄的行爲在MSDN Library中更新,現在再次與實際行爲不匹配。