ODataサービスに接続するSilverlight4アプリケーションがあります。私のモデルは複数のクエリをサービスに並行して送信しており、クエリコールバックでは、バックグラウンドワーカーを使用して結果を処理しています。
これは、1つの呼び出しを行う場合はうまく機能しますが、複数の呼び出しを並行して行うとすぐに(場合によっては機能します)、EndExecuteを呼び出すと、ほとんどの場合、データサービスコンテキストで例外が発生します(内部の変更追跡メカニズムにエンティティを追加しています。)
そこで、EndExecuteを呼び出した時点でデータサービスをロックすることにしました。
lock (dataService)
{
results = query.EndExecute(queryCallback).ToList<Video>();
}
これで問題が修正され、データリクエストが確実に処理されるようになりました。
私の質問は2つあります-これは推奨される方法ですか?ODataコンテキストはスレッドセーフではありませんか?