silverlight中的交叉线程访问无效

时间:2012-07-20 06:58:26

标签: multithreading visual-studio-2010 silverlight drawing line

我正在使用silverlight 3.0进行申请。在该应用程序中,我有一个公共方法

public void DrawWavform()
{
     Line[,] line = new Line[10,200];
     line[i,j]= new Line();//i am getting error here of invalid thread access
    //some operation

}

在应用程序中,我根据用户输入创建不同的线程,并从新创建的线程调用DrawWaveform方法。我想并行操作。请建议我解决。谢谢。

1 个答案:

答案 0 :(得分:6)

必须在UI线程上执行更改GUI的任何操作。这可以使用dispatcher

来完成
Deployment.Current.Dispatcher.BeginInvoke( () =>
{
  // update ui
});

(SomeDependencyObject).Dispatcher.BeginInvoke( () => { /* ... */ } );

无论如何,这个代码应该很少使用,只包含与UI相关的代码。在UI线程上执行昂贵的操作将导致应用程序挂起。