【问题标题】:Update a TextBlock with elapsed time causing an UnauthorizedAccessException使用已用时间更新 TextBlock 导致 UnauthorizedAccessException
【发布时间】:2010-07-22 14:19:01
【问题描述】:

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

“开始”按钮调用一个名为UpdateTime 的方法,该方法不断更新_ElapsedTime,直到_StopPressed 为真。当我最初编写它时,UpdateTime 会阻止 UI,所以我无法按下停止按钮,所以我更新了我的代码以使用 System.Threading.ThreadPool.QueueUserWorkItem 和我的 UpdateTime 方法,以便它在后台线程上更新 _Elapsed .这非常适合更新值。

但是,如果我尝试在UpdateTime() 中设置TextBlock.Text 值,我会得到一个UnauthorizedAccessException,这与一个线程访问另一个线程中的数据有关。

我需要做些什么来避免出现此异常并在不阻塞的情况下适当地更新 UI?

【问题讨论】:

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


【解决方案1】:

使用 DispatcherTimer 代替计时器,工作方式几乎完全相同,但用于更新 UI 元素。

【讨论】:

    猜你喜欢
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2014-09-07
    相关资源
    最近更新 更多