Creo que necesito ayuda para entender el Cola del despachador.Entender la cola del despachador
Cuando llega un nuevo trabajo, se agrega al principio de la cola del despachador y cuando el despachador desea procesar un elemento que funciona, se elimina desde el principio.
En términos más generales: si hay trabajo, se almacena de manera FIFO dentro de la cola y se procesa mientras no quede trabajo.
La documentación de MSDN here se refiere a un loop
y una frame
:
The Dispatcher processes the work item queue in a loop. The loop is referred to as a frame.
Pero dónde está un bucle en este contexto? Para mí, un ciclo es algo que itera sobre algo y cuando llega al final comienza de nuevo.
¿Y cuál es el concepto de frame
? Según la documentación de MSDN, ¿un marco es un puñado de elementos de trabajo dentro de la cola? Si eso es cierto, ¿cómo debe usarse el método estático Disptatcher.PushFrame()
?
Y la pregunta más interesante es si hay alguna forma de obtener el estado actual de la cola, especialmente cuántos elementos hay en la cola.
¿Se mantiene si un método que se ha invocado antes (y por lo tanto puesto en la cola Dispatcher) se ejecuta que luego se elimina de la cola inmediatamente o dura por dentro por otro período de tiempo?
lo sé, Tantas preguntas :-)
Primera pregunta: ¿por qué? ¿Por qué quieres hacer algo con Dispatcher? Normalmente, Dispatcher es simplemente la "bomba de mensajes" para un proceso de WPF. Maneja todos los mensajes/eventos/comandos a través de la interfaz de usuario de WPF al código de la aplicación (por ejemplo, movimiento del mouse, clics, etc.) Cuando se invoca el método Run de las aplicaciones, llama a PushFrame para iniciar ese ciclo. No puede iniciar otro para el mismo hilo; y Dispatcher está destinado a procesar el trabajo de UI. –
¿Has leído sobre el [modelo de subprocesamiento] (http://msdn.microsoft.com/en-us/library/ms741870.aspx)? –
Es una solución estándar para el problema productor-consumidor: http://en.wikipedia.org/wiki/Producer-consumer_problem –