У меня есть приложение Silverlight 4, которое подключается к службе OData.Моя модель отправляет несколько запросов в службу параллельно, и в обратном вызове я обрабатываю результаты, используя фонового работника.
Это прекрасно работает, если я делаю один вызов, но как только я делаю более одногоВызов параллельно - иногда это работает - но большую часть времени я получаю исключение в контексте dataservice, когда я вызываю EndExecute (это происходит, когда он добавляет сущности в свой внутренний механизм отслеживания изменений).
ТакЯ решил заблокировать службу данных в точке, которую я называю EndExecute
lock (dataService)
{
results = query.EndExecute(queryCallback).ToList<Video>();
}
, которая устранила проблему, и теперь она надежно обрабатывает запросы данных.
Мой вопрос в два раза - это рекомендуемая практика?Контекст OData не является потокобезопасным?