У меня есть очень простое приложение StopWatch в Silverlight. У меня есть следующие частные свойства в моем MainPage
классе: _StopPressed
(bool), _TimeStart
, _Elapsed
(строка). У меня также есть кнопки «Пуск» и «Стоп».
Кнопка «Пуск» вызывает метод с именем UpdateTime
, который постоянно обновляет _ElapsedTime
до тех пор, пока _StopPressed
не станет истинным. Когда я писал изначально, UpdateTime
блокировал пользовательский интерфейс, поэтому я не мог нажать кнопку Стоп, поэтому я обновил свой код, чтобы использовать System.Threading.ThreadPool.QueueUserWorkItem
с моим методом UpdateTime
, чтобы он обновлял _Elapsed
в фоновом потоке , Это прекрасно работает при обновлении значения.
Однако, если я попытаюсь установить значение .Text
моего TextBlock
из UpdateTime()
, я получу UnauthorizedAccessException
, который связан с тем, что один поток обращается к данным в другом потоке.
Что мне нужно сделать, чтобы избежать получения этого исключения и соответствующим образом обновить интерфейс, не блокируя его?