winformsクライアントアプリケーションで、WCFサービスの非同期メソッド(Begin...およびEnd...)を生成しました。
アプリケーションが起動すると、サーバーに対して非同期呼び出しを行い、後でアプリケーションで使用されるデータ(国のリストなど)を取得してキャッシュします。
非同期呼び出しが完了する前に、アプリケーションのメインスレッドがこのデータを必要とする場合(コンボボックスを埋めるためなど)、非同期呼び出しが終了するまでメインスレッドをブロックしたいと思います。WCFサーバーへの冗長な呼び出しを避けたい。
Monitor / Mutexを使用しようとしましたが、メインスレッドで、メソッドが呼び出されMonitor.Enter(countryLock)
たときに呼び出されました。ただし、次の例外に直面しています。BeginGetCountries
Monitor.Exit(countryLock)
EndGetCountries
オブジェクト同期メソッドは、同期されていないコードブロックから呼び出されました。
Monitor.Exit(...)
呼び出したのと同じスレッドを呼び出すことになっていMonitor.Enter(...)
ますか?はいの場合、どうすればMonitor
オブジェクトの所有者を知り、そのコンテキストで呼び出しを行うことができますか?