私はフィールドを宣言しました:
WriteableBitmap colorBitmap;
次に、何かを行う単純なスレッドを作成しました。
private void doSomething()
{
// ... bla bla bla
colorBitmap = new WriteableBitmap(/* parameters */);
myImage.Source = colorBitmap; // error here:S
}
Windows_Loadedイベントで、新しいスレッドを宣言して開始しました。
private void window_Loaded(object sender, RoutedEventArgs e)
{
Thread th = new Thread(new ThreadStart(doSomething));
th.Start();
}
問題は、myImageのソースを変更できなかったことです。次のようなエラーが発生しました:
InvalidOperationExceptionは処理されませんでした。別のスレッドがオブジェクトを所有しているため、呼び出し元のスレッドはこのオブジェクトにアクセスできません。
Dispatcher.Invokeを使用しようとしましたが、役に立ちませんでした...
Application.Current.Dispatcher.Invoke((Action)delegate
{
myImage.Source = colorBitmap;
});
私はいくつかの答えを探していましたが、私のものとまったく同じケースを見つけることはできませんでした。any1は、このような問題を解決する方法を理解するのに役立ちますか(最近同じ問題が発生しましたが、他のスレッドが所有しているため、メソッドを呼び出すことができませんでした)。