2008-09-29 6 views
6

Die MSDN besagt, dass die MethodeWenn ThreadPool.QueueUserWorkItem false zurück

true zurück, wenn das Verfahren erfolgreich die Warteschlange gestellt wurde; NotSupportedException wird ausgelöst, wenn das Arbeitselement nicht in der Warteschlange steht.

Zu Testzwecken, wie Sie die Methode false zurückgeben? Oder ist es nur ein "suboptimales" Klassen-Design?

+1

+1: Ich liebe die "suboptimal" Adjektiv :) –

Antwort

5

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); 
1

Dies ist wahrscheinlich ein Fall von "für die zukünftige Verwendung reserviert". Vielleicht möchten Sie es als Fehler behandeln, aber es wird schwer zu testen sein.

Ich behandle diese Methode so gut wie ein void/Sub.

1

Es ist vorstellbar, dass die gesamte API (Thread-Pools) obsolet wird, wenn die Task Parallel Library (TPL) ankommt.

1

true, wenn die Methode erfolgreich Warteschlange ; NotSupportedException wird ausgelöst, wenn das Arbeitselement nicht in der Warteschlange steht.

Treat ein return false in der gleichen Art und Weise, dass Sie ein NotSupportedException behandeln.

Verwenden Sie eine Scheinmethode oder ein Objekt, um false zurückzugeben.
Sie möchten Ihren eigenen Code testen, den Sie geschrieben haben, nicht den zugrunde liegenden Windows-Code. Ich bin sicher, Microsoft hat dafür schon eine Menge eigener Tests.

+2

Ausnahmen wurden tatsächlich "erfunden", um die Praxis zu verhindern "ignorieren den Rückgabewert". –