2008-09-29 14 views
6

El MSDN indica que el método devuelveThreadPool.QueueUserWorkItem devuelve false

cierto si el método es éxito en cola; NotSupportedException es lanzada si el elemento de trabajo no está en cola.

Para fines de prueba, ¿cómo obtener el método para devolver false? ¿O es simplemente un diseño de clase "subóptimo"?

+1

+1: Me encanta el adjetivo "suboptimal" :) –

Respuesta

5

Al analizar el código fuente en el reflector, parece que la única parte del código que podría volver "falsa" es una llamada a la siguiente:

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

Este es probablemente un caso de "reservado para uso futuro". Es posible que desee tratarlo como una falla, pero será difícil de probar.

Casi trato este método como un vacío/Sub.

1

Es imaginable que toda la API (grupos de subprocesos) se vuelve obsoleta, cuando llega la Biblioteca de tareas paralelas (TPL).

1

cierto si el método se pone en cola con éxito ; NotSupportedException se lanza si el elemento de trabajo no está en cola.

Trate a return false de la misma forma que trata a NotSupportedException.

Para que devuelva un valor falso, utiliza un método u objeto simulado.
Quiere probar su propio código que escribió, no el código de Windows subyacente. Estoy seguro de que Microsoft ya tiene muchas pruebas para eso.

+2

Las excepciones fueron en realidad "inventadas" para evitar que la práctica "ignore el valor de retorno". –

Cuestiones relacionadas