Обновление TextBlock за истекшее время, вызывающее UnauthorizedAccessException - PullRequest
0 голосов
/ 22 июля 2010

У меня есть очень простое приложение StopWatch в Silverlight. У меня есть следующие частные свойства в моем MainPage классе: _StopPressed (bool), _TimeStart, _Elapsed (строка). У меня также есть кнопки «Пуск» и «Стоп».

Кнопка «Пуск» вызывает метод с именем UpdateTime, который постоянно обновляет _ElapsedTime до тех пор, пока _StopPressed не станет истинным. Когда я писал изначально, UpdateTime блокировал пользовательский интерфейс, поэтому я не мог нажать кнопку Стоп, поэтому я обновил свой код, чтобы использовать System.Threading.ThreadPool.QueueUserWorkItem с моим методом UpdateTime, чтобы он обновлял _Elapsed в фоновом потоке , Это прекрасно работает при обновлении значения.

Однако, если я попытаюсь установить значение .Text моего TextBlock из UpdateTime(), я получу UnauthorizedAccessException, который связан с тем, что один поток обращается к данным в другом потоке.

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

1 Ответ

0 голосов
/ 22 июля 2010

Используйте DispatcherTimer вместо таймера, работает почти так же, но используется для обновления элементов пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...