usan tienda tag que puedo pueden proyectos programas hechos hechas hacer famosos empresas ejemplos crear con como aplicaciones actualizar c# windows-runtime windows-store-apps async-await dispatcher

tienda - que aplicaciones se pueden hacer con c#



Forma correcta de obtener CoreDispatcher en una aplicaciĆ³n de la Tienda Windows (4)

En realidad, propondría algo en la línea de esto:

return (Window.Current == null) ? CoreApplication.MainView.CoreWindow.Dispatcher : CoreApplication.GetCurrentView().CoreWindow.Dispatcher

De esa manera, si abrieras otra Vista / Ventana, no conseguirás que los Despachadores se confundan ...

Esta pequeña gema verifica si hay incluso una ventana. Si no tiene ninguno, use el Despachador de MainView. Si hay una vista, use ese Dispatcher.

Estoy construyendo una aplicación de Windows Store, y tengo un código que debe ser publicado en el hilo de la interfaz de usuario.

Para eso, me gustaría recuperar el CoreDispatcher y usarlo para publicar el código.

Parece que hay algunas formas de hacerlo:

// First way Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().CoreWindow.Dispatcher; // Second way Window.Current.Dispatcher;

Me pregunto cuál es correcto? o si ambos son equivalentes?


Esta es la forma preferida:

Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { // Your UI update code goes here! });

La ventaja de esto es que obtiene el CoreApplicationView principal y siempre está disponible. Más detalles here .

Hay dos alternativas que puedes usar.

Primera alternativa

Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().CoreWindow.Dispatcher

Esto obtiene la vista activa para la aplicación, pero esto le dará nulo , si no se ha activado ninguna vista. Más detalles here .

Segunda alternativa

Window.Current.Dispatcher

Esta solución no funcionará cuando se invoque desde otro hilo ya que devuelve null en lugar de UI Dispatcher . Más detalles here .


Para cualquiera que use C ++ / CX

Windows::ApplicationModel::Core::CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync( CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this]() { // do stuff }));


await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync( CoreDispatcherPriority.Normal, () => { // your code should be here});