2008-09-29 130 views
6

的MSDN指出該方法,如果該方法是成功 返回當ThreadPool.QueueUserWorkItem返回false

真排隊;如果工作項未排隊,則NotSupportedException爲 。

用於測試目的如何獲取返回方法false?或者它只是一個「次優」的課堂設計?

+1

+1:我喜歡「suboptimal」形容詞:) – 2013-01-09 14:26:07

回答

5

在看着反射器的源代碼,似乎可以返回「假」的代碼只有部分是下面的電話:

[MethodImpl(MethodImplOptions.InternalCall)] 
private static extern bool AdjustThreadsInPool(uint QueueLength); 
1

這可能是「保留供將來使用」的情況。你可能想把它當作失敗,但這將很難測試。

我幾乎把這個方法當作void/Sub。

1

當任務並行庫(TPL)到達時,可以想象到整個API(線程池)變得過時。

1

true,如果該方法被成功排隊;如果工作項未排隊,則會引發NotSupportedException。

以與您對待NotSupportedException相同的方式對待return false

要使它返回false,請使用模擬方法或對象。
你想測試你自己寫的代碼,而不是基礎的windows代碼。我確信微軟已經有很多自己的測試了。

+2

例外實際上是「發明」,以防止「忽略返回值」的做法。 – 2008-10-01 21:45:45