У меня есть этот код в методе:
Task<int> linksCount = Task<int>.Factory.StartNew(() => { return DatabaseIn.GetUrlsCount(); });
Task<int> imagesCount = Task<int>.Factory.StartNew(() => { return DatabaseIn.GetImagesCount(); });
Позже отображаются linksCount
и imagesCount.Result
. Однако когда я запускаю этот код в первый раз. Я получаю следующее исключение:
Уже существует открытый DataReader, связанный с этим подключением, которое необходимо сначала закрыть.
Код, в котором создается исключение:
MySqlCommand comm = null;
string cmdString = "SELECT COUNT(*) FROM damocles.imagestoassess;";
comm = new MySqlCommand(cmdString, conn);
if (comm.ExecuteScalar() == null)
{
comm.Dispose();
conn.Close();
return 0;
}
int res = Convert.ToInt32(comm.ExecuteScalar());
comm.Dispose();
conn.Close();
return res;
Исключение возникает при первом вызове ExecuteScalar
. Если я заключу код в предложение try..catch
, код продолжится, но в другой части кода возникнет другая ошибка.
Вопрос:
- Почему это вызывает исключение? При синхронном запуске не возникает никаких исключений.
- Как исправить, чтобы код работал асинхронно?
Спасибо.