0

私はSilverlight3.0でアプリケーションを作成しています。そのアプリケーションでは、私は1つのパブリックメソッドを持っています

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メソッドを呼び出しています。並行して運用したいのですが、解決策を提案してください。よろしくお願いします。

4

1 に答える 1

7

GUIを変更する操作は、UIスレッドで実行する必要があります。これは、ディスパッチャを使用して実行できます。

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

また

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

とにかく、このコードは非常にまれにしか使用されず、UI関連のコードのみが含まれている必要があります。UIスレッドで高額な操作を実行すると、アプリケーションがハングします。

于 2012-07-20T07:08:59.650 に答える