Wenn ThreadPool.QueueUserWorkItem false zurück
-
02-07-2019 - |
Frage
Die MSDN besagt, dass die Methode zurückgibt
true, wenn die Methode erfolgreich ist In Warteschlange; NotSupportedException ist wenn das Workitem geworfen nicht die Warteschlange gestellt wird.
Für Testzwecke, wie die Methode zu bekommen false
zurückzukehren? Oder ist es nur eine „suboptimale“ Klasse Design?
Lösung
auf den Quellcode in Reflector In suchen, scheint es der einzige Teil des Codes, der „false“ ist ein Aufruf an die folgende zurückkehren konnte:
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool AdjustThreadsInPool(uint QueueLength);
Andere Tipps
Dies ist wahrscheinlich ein Fall von „reserviert für zukünftige Nutzung“. Vielleicht möchten Sie es als Versagen behandeln, aber es wird zu testen hart sein.
Ich habe so ziemlich behandeln diese Methode als nichtig / Sub.
Es ist vorstellbar, dass die gesamte API (Thread-Pools) wird überflüssig, wenn die Task-Library (TPL) Parallel kommt.
true, wenn die Methode erfolgreich die Warteschlange gestellt wird; NotSupportedException ausgelöst wird, wenn das Workitem nicht die Warteschlange gestellt wird.
Treat eine return false
in der gleichen Art und Weise, dass Sie ein NotSupportedException
behandeln.
Um es falsch zurückzukehren, verwenden Sie eine Mock-Methode oder ein Objekt.
Sie möchten Ihren eigenen Code zu testen, die Sie geschrieben haben, nicht die zugrunde liegende Fenster Code. Ich bin sicher, dass Microsoft viel ihre eigenen Tests haben bereits dafür.