Когда ThreadPool.QueueUserWorkItem возвращает false - PullRequest
6 голосов
/ 30 сентября 2008

MSDN утверждает, что метод возвращает

true, если метод успешно очередь; NotSupportedException выбрасывается, если рабочий элемент не находится в очереди.

Для целей тестирования, как заставить метод возвращать false? Или это просто «неоптимальный» класс дизайна?

Ответы [ 4 ]

5 голосов
/ 30 сентября 2008

При просмотре исходного кода в Reflector кажется, что единственная часть кода, которая может возвращать "false", - это вызов следующего:

[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool AdjustThreadsInPool(uint QueueLength);
1 голос
/ 30 сентября 2008

true, если метод успешно поставлен в очередь; NotSupportedException генерируется, если рабочий элемент не поставлен в очередь.

Относитесь к return false так же, как к NotSupportedException.

Чтобы заставить его возвращать false, используйте фиктивный метод или объект.
Вы хотите тестировать свой собственный код, который вы написали, а не основной код Windows. Я уверен, что у Microsoft уже есть множество собственных тестов для этого.

1 голос
/ 30 сентября 2008

Можно представить, что весь API (пулы потоков) устареет, когда прибудет параллельная библиотека задач (TPL).

1 голос
/ 30 сентября 2008

Это, вероятно, случай "зарезервировано для будущего использования". Вы можете рассматривать это как неудачу, но это будет трудно проверить.

Я в значительной степени отношусь к этому методу как к пустоте / Sub.

...