WPFアプリケーションでは、オブジェクトを作成するBackgroundWorkerスレッドがありました。オブジェクトをfooと呼びましょう。
バックグラウンドワーカーコード:
SomeClass foo = new SomeClass();
// Do some operation on foo
// Set some dependency property on the main class to foo
this.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
(SendOrPostCallback)delegate { SetValue(FooProperty, foo); },
foo);
これで、メインクラスがゲッターを使用してFooPropertyにアクセスしようとすると、InvalidOperationExceptionが発生します。別のスレッドがオブジェクトを所有しているため、呼び出し元のスレッドはこのオブジェクトにアクセスできません。
オブジェクトの作成のスレッドが終了した場合、なぜそれがまだオブジェクトを所有しているのですか?どういうわけかこれの周りにありますか?