2008-09-29 13 views
6

MSDN stwierdza, że ​​metoda zwracaKiedy ThreadPool.QueueUserWorkItem zwraca false

prawdziwe, jeśli metoda ta jest skutecznie kolejce; NotSupportedException jest zgłaszany, jeśli element pracy nie jest w kolejce.

Dla celów testowych, jak uzyskać metodę zwrotu false? Czy jest to po prostu "suboptymalny" projekt klasy?

+1

+1: Uwielbiam przymiotnik "suboptymalny" :) –

Odpowiedz

5

Patrząc na kod źródłowy w reflektor, wydaje się, że tylko część kodu, który może wrócić „false” jest wezwaniem do następujących:

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

Jest to prawdopodobnie przypadek "zarezerwowany do użycia w przyszłości". Możesz potraktować to jako porażkę, ale będzie to trudne do sprawdzenia.

Prawie traktuję tę metodę jako pustkę/Sub.

1

Można sobie wyobrazić, że cały interfejs API (pule wątków) staje się przestarzały, gdy nadejdzie zadanie Biblioteka zadań (TPL).

1

true, jeśli metoda jest z powodzeniem w kolejce ; Wyjątek NotSupportedException jest zgłaszany, jeśli element pracy nie jest w kolejce.

Traktuj numer return false w ten sam sposób, w jaki traktujesz numer NotSupportedException.

Aby uzyskać zwrócenie wartości false, użyj metody lub obiektu próbnego.
Chcesz przetestować swój własny kod, który napisałeś, a nie podstawowy kod systemu Windows. Jestem pewien, że microsoft ma już wiele własnych testów.

+2

Wyjątki zostały faktycznie "wynalezione", aby zapobiec praktyce "zignoruj ​​wartość zwrotu". –

Powiązane problemy