Lorsque ThreadPool.QueueUserWorkItem renvoie false
-
02-07-2019 - |
Question
Le MSDN indique que la méthode retourne
true si la méthode est réussie en file d'attente; NotSupportedException is levé si l'élément de travail n'est pas en file d'attente.
À des fins de test, comment obtenir la méthode pour renvoyer false
? Ou c’est juste un " sous-optimal " conception de classe?
La solution
En examinant le code source dans Reflector, il semble que la seule partie du code pouvant renvoyer " false " est un appel au suivant:
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool AdjustThreadsInPool(uint QueueLength);
Autres conseils
C’est probablement un cas de "réservé pour une utilisation future". Vous voudrez peut-être considérer cela comme un échec, mais ce sera difficile à tester.
Je traite à peu près cette méthode comme un vide / Sub.
Il est imaginable que l'intégralité de l'API (pools de threads) devienne obsolète lorsque la bibliothèque de tâches (TPL) arrive.
true si la méthode est mise en file d'attente avec succès; L'exception NotSupportedException est levée si l'élément de travail n'est pas en file d'attente.
Traiter un return false
de la même manière que vous traitez une NotSupportedException
.
Pour qu'il renvoie false, utilisez une méthode ou un objet fictif.
Vous voulez tester votre propre code que vous avez écrit, pas le code Windows sous-jacent. Je suis sûr que Microsoft a déjà ses propres tests pour cela.