Приложение Магазина Windows 8, использование членов статического класса внутри асинхронных вызовов

Я пишу приложение, которое довольно последовательно выполняет несколько операций с сокетами и имеет систему обмена сообщениями о событиях, аналогичную парадигме javascript (eventlistener.on(,)/eventlistener.emit()). Я вывожу некоторую отладочную информацию из асинхронного вызова, который добавляет элемент xaml TextBlock с отладочной информацией. Когда я испускаю одно и то же событие вне асинхронной функции, оно работает нормально. Я обернул свое событие on/emit вызовами с помощью мьютексов, которые, как я полагал, будут достаточно хороши, чтобы позволить мне писать в TextBlock.

Чтобы визуализировать процесс события:

[класс]->слушатель->излучать(‹тип>,‹данные>)->[Диспетчер]->[Слушатели(‹тип>)]->лямбда([класс],‹данные>)

Я недостаточно знаком с асинхронными функциями WinRT и идеологиями Windows 8 UI/Metro/Modern, чтобы знать, есть ли у меня особый способ добавления TextBlock из потока или есть ли лучший способ сделать это.

Короче говоря, можно ли добавить текстовый блок из асинхронной функции, и если да, то нужно ли мне делать что-то особенное?


person OzBarry    schedule 30.01.2013    source источник
comment
Обновленный вопрос, чтобы быть более ясным   -  person OzBarry    schedule 30.01.2013


Ответы (1)


Ничто не должно мешать вам обновить TextBlock из асинхронной функции, если обновление находится в потоке пользовательского интерфейса/диспетчера. Асинхронные вызовы функций в определенном потоке обычно заканчиваются в том же потоке.

person Filip Skakun    schedule 30.01.2013
comment
Я обнаружил, что в одном из моих асинхронных потоков было исключение, с которым я забыл закончить работу. Но спасибо за информацию :) - person OzBarry; 31.01.2013