При работе серверного приложения возникает нехороший Invalidoperationexception.
Локализировать место вылета не удаётся (возникает только при большой нагрузке и у стороны клиента). Но все обращения к БД находятся в следующем участке кода:
DBR _dbr = new DBR(); //класс для работы с БД
static ManualResetEvent _mre = new ManualResetEvent(true);
public void Transfer(object o)
{
//Запрос существующих устройств
_mre.Reset();
_emeiList = _dbr.GetIMEIs();
_mre.Set();
Connection conn = (Connection)o;
Socket s = conn._socket;
byte[] buffer = new byte[17];
//Получение заголовка пакета устройства
...
//Проверка заголовка на наличие его в нашем списке
if (_emeiList.IndexOf(avlfp._imeiASCII) == -1)
{
//Отменяем получение
...
}
_dbr.UpdateDate(avlfp._imeiASCII, true);
//Проверка заголовка на необходимость обрабатывать данные с устройства
if (!_dbr.IsConnect(avlfp._imeiASCII))
{
//Отменяем получение
...
}
//Принимаем данные
...
//Сохраняем запись
_mre.Reset();
_dbr.SaveResult(avlPacket);
_mre.Set();
//Подтверждаем приём данных
...
}
}
Понимаю, что проблема возникает при одновременном запуске нескольких функций Transfer. Подскажите как найти место вылета исключения?