Я пытаюсь выполнить 3 операции с базой данных в One Hour.Работа с несколькими таймерами в веб-службе C#
1: Проверка на определенный момент времени на каждую минуту
2: Обновление конкретных записей После того, как каждые 15 минут
3: Обновление конкретных записей через каждые 60 минут
До 15 минуту все Ok ... Но в 15 минут 2 таймера должны одновременно обращаться к базе данных. Вот почему он показывает мне ошибку. Connection is already Open
. Теперь через 60 минут все три таймера одновременно получают доступ к базе данных, поэтому он снова отображает сообщение Connection is Already Open
. Через 60 минут все нормально до 15 минут. Но когда наступят следующие 15 минут. Сообщение будет снова видимым и так далее. Вот Таймер
Таймер1:
_Timer = new Timer();
this._Timer.Interval = 1000 * 60 * 1;
this._Timer.Elapsed += new System.Timers.ElapsedEventHandler(this._Timer_Tick);
_Timer.Enabled = true;
Вот _Timer_Tick Метод
CheckConnnectionStatus();
string cGroupQuery = "select value from settings where id=1 ";
try
{
sqlConnection.Open();
sqlCommand = new SqlCommand(cGroupQuery, sqlConnection);
sqlDataReader = sqlCommand.ExecuteReader();
if (sqlDataReader.Read())
{
string value= sqlDataReader[0].ToString();
if (value== "True")
{
Library.WriteErrorLog("System State Done Successfully");
TakeSystemState();
UpdateSystemState();
}
}
}
catch (Exception exp)
{
Library.WriteErrorLog(exp.Message.ToString() + " | Exception in CheckPrayerTime");
}
finally
{
CheckConnnectionStatus();
}
Timer2:
_Timer02 = new Timer();
this._Timer02.Interval = 1000 * 60 * 15;
this._Timer02.Elapsed += new System.Timers.ElapsedEventHandler(this._Timer02_Tick);
_Timer02.Enabled = true;
Таймер 3:
_Timer03 = new Timer();
this._Timer03.Interval = 1000 * 60 * 60;
this._Timer03.Elapsed += new System.Timers.ElapsedEventHandler(this._Timer03_Tick);
_Timer03.Enabled = true;
Может кто-нибудь наставит меня лучший подход, чтобы выполнить эти три операции в Timer в веб-службы
Я использую Sql Server 2008R2 Express Edition
Благодаря
Не могли бы вы поделиться реализацию из ' _Timer_Tick' с нами? –
@ botond.botos, да, конечно. Пожалуйста, просмотрите отредактированный пост сейчас –
Почему вы решили поместить эти операции с базой данных в веб-службу? Реализация его как службы Windows кажется более адекватной. Или вы можете реализовать его как простое консольное приложение, которое вызывается планировщиком задач, поэтому вам вообще не нужно беспокоиться о части «Таймер». –