В моем приложении одновременно происходит две вещи. Таймер запускает запрос на обновление сетки данных каждые несколько секунд в фоновом потоке. Вот код, который запускается этим потоком:
// Query
var qryPickupRequests = from pr in objDataContext.pickupRequests
.Include("toLocation")
.Include("fromLocation")
.Include("person")
orderby pr.creationDate ascending
select pr;
// Refresh from server?
if (boolRefreshFromServer)
(qryPickupRequests as ObjectQuery).MergeOption = MergeOption.PreserveChanges;
// Limit?
if (intLimit > 0)
return qryPickupRequests.Take(intLimit).ToList<pickupRequest>();
else
return qryPickupRequests.ToList<pickupRequest>();
Теперь в потоке пользовательского интерфейса открыта еще одна форма, обновляющая сетку местоположений:
/// <summary>
/// Refreshes the specified location data grid
/// </summary>
/// <param name="sender">Instance of GridLookupEdit to update</param>
private static void RefreshLocations(object sender) {
GridLookUpEdit objEditor = sender as GridLookUpEdit;
objEditor.Properties.DataSource = BRData.Models.LocationModel.GetLocationList(true);
objEditor.Properties.DisplayMember = "locationName";
objEditor.Properties.ValueMember = "locationID";
}
Проблема в том, что оба эти кодовых блока выполняются в одно и то же время. Я получаю следующую ошибку:
![enter image description here](https://i.stack.imgur.com/24mDp.png)
Внутреннее исключение выглядит следующим образом:
Уже есть открытый DataReader
связано с этим соединением, которое
должен быть закрыт первым.
Есть идеи, почему параллельные операции с базами данных не обрабатываются корректно Entity Framework ---- или мной?