Я занимаюсь разработкой службы Windows на C# и несколько раз обращается к базе данных, когда файлы удаляются в определенный каталог. Кроме того, у меня есть service_timer, который запускается каждые 5 минут, который также обращается к базе данных. Проблема в том, что когда моя служба обрабатывает файл и вызывается мой service_timer, я получаю InvalidOperationError (уже есть открытый Data Reader).InvalidOperationException с service_timer
Есть ли способ создать новое соединение для базы данных (на Microsoft SQL Server Express), чтобы я мог избежать этой проблемы или существует другое общее решение?
Спасибо.
Вот код функции, где исключение бросают:
DateTime start = DateTime.Now;
string SqlQuery = "SELECT COUNT (*) AS recCount FROM " + tableName + " " + whereclause;
Debug.WriteLine(thisMethod + " SqlQuery: " + SqlQuery);
myCommand = new SqlCommand(SqlQuery, this.SDB); //Execute Sql Statement
myCommand.ExecuteNonQuery();
// Create New Adapter
adapter = new SqlDataAdapter(myCommand);
adapter.SelectCommand = myCommand;
DataSet ds = new DataSet();
// Populate Adapter
adapter.Fill(ds);
foreach (DataTable dt in ds.Tables)
foreach (DataRow dr in dt.Rows)
{
recCount = Convert.ToInt32(dr["recCount"]);
}
Да, обязательно создайте новое локальное соединение db в обратном вызове таймера. –
Ну, я каждый раз создаю новый SQLConnection. – user1287523
Пожалуйста, покажите соответствующий код с указанием, где вы получите сообщение об ошибке. –