2013-06-27 11 views
0

Я пишу общее приложение, которое используется совместно с Windows Phone и метро. и мне нужно вызвать поток UI из потока Worker в коде XAML в приложении Metro. И да, я знаю, что могу это сделать, используя async и жду. Но я не могу использовать это, потому что эта вещь не будет поддерживаться для других платформ (Android и Phone).Вызов потока пользовательского интерфейса из рабочего потока в приложении Metro

В Windows Phone я знаю, что это можно сделать с помощью Deployment.Dispatcher.Current.BeginInvoke(). Но я не могу понять, как это делается в приложении Metro

Кроме того, я новичок в разработке C# и App. Поэтому, если вы можете представить его подробно, это будет полезно.

ответ

0

В ближайшем будущем я ожидаю, что мы сможем использовать async в портативных библиотеках классов для Android/WP/Windows Store. async работает лучше всего, если вы обрабатываете фоновые операции как «сервисы» для пользовательского интерфейса, а не как пользовательский интерфейс в качестве «службы» для фоновых операций. Таким образом, ваш код будет работать лучше, если вы реструктурируете его, разбив свою большую фоновую операцию на более мелкие куски и подключив их к пользовательскому интерфейсу, обновляя промежуточный кусок. Когда ваш код структурирован таким образом, ваши фоновые операции никогда не будут нуждаться в маршалировании пользовательского интерфейса.

Если вы просто хотите получить что-то работающее сейчас с меньшим количеством работы, вы можете использовать SynchronizationContext. Когда ваша фоновая операция начинается, запишите SynchronizationContext.Current и позже используйте методы или Post для запуска обновлений пользовательского интерфейса из вашей фоновой операции. Это приводит к созданию более грязного дизайна, но сегодня это будет работать в Android/WP/Windows Store.