使用已用时间更新TextBlock,从而导致UnauthorizedAccessException

时间:2010-07-22 14:19:01

标签: c# .net vb.net silverlight multithreading

我在Silverlight中有一个非常简单的StopWatch应用程序。我的MainPage课程中包含以下私有属性:_StopPressed(bool),_TimeStart_Elapsed(字符串)。我还有一个“开始”和“停止”按钮。

“开始”按钮调用名为UpdateTime的方法,该方法会不断更新_ElapsedTime,直到_StopPressed为真。当我最初编写它时,UpdateTime会阻止用户界面,因此我无法按下“停止”按钮,因此我更新了我的代码以使用System.Threading.ThreadPool.QueueUserWorkItem方法使用UpdateTime方法,以便更新{ {1}}在后​​台线程上。这非常适合更新价值。

但是,如果我尝试在_Elapsed中设置.Text的{​​{1}}值,我会得到一个TextBlock,它与一个访问数据的线程有关在另一个线程中。

我需要做些什么来避免出现此异常并适当更新UI而不阻止它?

1 个答案:

答案 0 :(得分:0)

使用DispatcherTimer而不是计时器,几乎完全相同,但用于更新UI元素。