WP7 Недопустимый межпоточный доступ — ScheduledTaskAgent

В приложении WP7 я вызываю некоторый код для обновления живой плитки из метода onInvoke в классе ScheduledAgent.

Получение недопустимой ошибки перекрестного потока.

Линия, на которой он терпит неудачу,

var fontForeground = new SolidColorBrush(Colors.White);

Я понимаю, что существуют ограничения и API, которые я не могу вызывать из этой фоновой задачи, но я только пытаюсь настроить некоторые вещи, чтобы создать собственное изображение для отображения на плитке Live.

Есть ли что-то очевидное, что я делаю неправильно здесь.

  • Благодарность

Обновлять...

Я обнаружил этот вопрос

Как можно Я отображаю текст в WriteableBitmap в фоновом потоке в Windows Phone 7?

Это та же проблема, что и у меня, и хотя здесь есть хороший диалог, не похоже, что есть простой способ обойти это?


person Peter    schedule 15.09.2011    source источник


Ответы (1)


Используйте Dispatcher для выполнения кода в потоке пользовательского интерфейса вместо фонового потока:

Deployment.Current.Dispatcher.BeginInvoke(()=>
    { 
         fontForeground  = new SolidColorBrush(Colors.White);
         ...        
   });
person thumbmunkeys    schedule 15.09.2011
comment
Спасибо за быстрый ответ. Эта строка не компилируется. Невозможно преобразовать лямбда-выражение в тип System.Windows.Threading.DispatcherPriority, так как это не тип делегата. Вы упоминаете выполнение кода в потоке пользовательского интерфейса - будет ли этот же код работать в приложении переднего плана. Я пытаюсь использовать один и тот же фрагмент кода как для переднего плана, так и для фона. - person Peter; 15.09.2011
comment
отредактировал мой ответ. Приведенный выше код будет выполняться в потоке пользовательского интерфейса. Хотя я не уверен, что это решит вашу проблему, так как я не знаком с ScheduleAgent, но попробовать стоит :) - person thumbmunkeys; 15.09.2011
comment
извините - все еще не смог понять синтаксис. - person Peter; 15.09.2011