我在Silverlight中有一个非常简单的StopWatch应用程序。我的MainPage
课程中包含以下私有属性:_StopPressed
(bool),_TimeStart
,_Elapsed
(字符串)。我还有一个“开始”和“停止”按钮。
“开始”按钮调用名为UpdateTime
的方法,该方法会不断更新_ElapsedTime
,直到_StopPressed
为真。当我最初编写它时,UpdateTime
会阻止用户界面,因此我无法按下“停止”按钮,因此我更新了我的代码以使用System.Threading.ThreadPool.QueueUserWorkItem
方法使用UpdateTime
方法,以便更新{ {1}}在后台线程上。这非常适合更新价值。
但是,如果我尝试在_Elapsed
中设置.Text
的{{1}}值,我会得到一个TextBlock
,它与一个访问数据的线程有关在另一个线程中。
我需要做些什么来避免出现此异常并适当更新UI而不阻止它?
答案 0 :(得分:0)
使用DispatcherTimer而不是计时器,几乎完全相同,但用于更新UI元素。