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?
Esta respuesta puede ser útil: http://stackoverflow.com/a/5109784/245183 –
@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? –
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(). –