2010-04-18 8 views
46

¿Hay alguna manera de obtener el subproceso UI Dispatcher cuando no tiene ninguna referencia a elementos de la interfaz de usuario?¿Cómo obtengo el desencadenador de subprocesos de UI?

+0

Algunos detalles más ... ¿no tiene referencia a los objetos de la GUI o al subproceso UI? ¿Qué piensas hacer una vez que tienes el despachador? – Gishu

+0

@Gishu, y para los que vienen siete años después como yo, necesitas esto cuando todo lo que tienes es, por ejemplo, un 'ObservableCollection' que se está escuchando en el subproceso de UI (y por lo tanto no se verificará la reentrada si intenta modificarlo fuera del subproceso de UI) pero no expone a ningún despachador ... en este caso necesita la IU' Dispatcher' pero no tiene ningún elemento UI –

Respuesta

86

se puede agarrar la interfaz de usuario del despachador de la instancia de la aplicación estática: Application.Current.Dispatcher

Es posible que desee comprobar Application.Current por primera nula, ya que puede borrarse durante una secuencia de apagado.

+12

Desafortunadamente, esto también es nulo en WinForms, para aquellas almas desafortunadas que están alojando elementos WPF dentro de una aplicación WinForms. –

+3

@AndrewGarrison, puede crear manualmente el objeto 'Aplicación' estático diciendo' new System.Windows.Application() '. – Taedrin

Cuestiones relacionadas