在Silverlight中,如何在Main Dispatch Thread上调用操作?

时间:2008-10-21 17:13:26

标签: .net silverlight multithreading

在WinForms UserControl中,我会通过从任何控件的方法调用this.BeginInvoke()将数据传递给主GUI线程。什么是Silverlight UserControl中的等价物?

换句话说,如何获取任意工作线程提供的数据并确保在主显示线程上处理它?<​​/ p>

2 个答案:

答案 0 :(得分:6)

在UserControl类上使用Dispatcher属性。

private void UpdateStatus()
{
  this.Dispatcher.BeginInvoke( delegate { StatusLabel.Text = "Updated"; });
}

答案 1 :(得分:2)

    private void UpdateStatus()
    {
       // check if we not in main thread
       if(!this.Dispatcher.CheckAccess())
       {
          // call same method in main thread
          this.Dispatcher.BeginInvoke( UpdateStatus );
          return;
       }

       // in main thread now
       StatusLabel.Text = "Updated";
    }