私はC#でWindowsサービスを開発していますが、ファイルが特定のディレクトリにドロップされると、データベースに数回アクセスします。さらに、データベースにもアクセスする5分ごとに実行されるservice_timerがあります。問題は、サービスがファイルを処理しているときにservice_timerが呼び出されると、InvalidOperationErrorが発生することです(すでに開いているデータリーダーがあります)。
この問題を回避できるように(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"]);
}