2011-12-19 15 views
7

SynchronizationContext tiene una propiedad llamada IsWaitNotificationRequired. De su propósito, el docs tiene esto para decir:¿Para qué se necesita SynchronizationContext.IsWaitNotificationRequired?

Determina si se requiere una notificación de espera.

true si se requiere notificación de espera; de lo contrario, falso.

Gosh, eso aclara las cosas.

¿Qué es exactamente esta "notificación de espera", y cuándo/por qué sería necesaria/no obligatoria? ¿Es IsWaitNotificationRequired algo similar a Control.InvokeRequired, o es algo diferente?

+0

Esta respuesta puede ser útil: http://stackoverflow.com/a/5109784/245183 –

+0

@OndrejTucny, no estoy seguro de qué hacer con esa respuesta ... ¿eso significa que le permite especificar qué WinAPI llama a 'Monitor.Enter' y' Monitor.Exit' a usar para esperar en un bloqueo? ¿Qué sucede cuando 'IsWaitNotificationRequired' es falso? –

+0

El método interno WaitHelper() es la clave, evoca el código de espera del controlador dentro del CLR que es seguro para los apartamentos de un solo subproceso COM. Lanza un mensaje de bucle, el hilo es STA para garantizar que la espera no provoque un punto muerto. WPF lo necesita. Revise MsgWaitForMultipleObjects(). –

Respuesta

1

Esto es para la infraestructura que permite la conexión a la rutina de espera de sincronización CLR. Este blog explica cómo funciona esto: http://www.bluebytesoftware.com/blog/PermaLink,guid,710e6ba3-60e9-4f5e-a5a7-d878015c7a16.aspx

Esta propiedad siempre devolverá false si este comportamiento no ha sido anulado específicamente en una subclase de SynchronizationContext y si lo hace su puesta en práctica del método sobrescrito Wait se llama.

+0

El enlace está roto :-( –

Cuestiones relacionadas