Ich versuche, 3 datenbankbezogene Vorgänge in einer Stunde auszuführen.Mit mehreren Zeitgebern im C# -Webdienst arbeiten
1: Überprüfen für bestimmte Zeit auf jede Minute
2: Aktualisieren bestimmte Datensätze nach jeder 15 Minuten
3: Aktualisieren bestimmte Datensätze nach jeder 60 Minuten
Bis 15. Minute alles Ok ... Aber auf 15 Minuten muss 2 Timer gleichzeitig auf die Datenbank zugreifen. Deshalb zeigt es mir einen Fehler. Connection is already Open
. Jetzt nach 60 Minuten greifen alle drei Timer gleichzeitig auf die Datenbank zu, weshalb sie die Nachricht erneut anzeigen wird Connection is Already Open
. Nach 60 Minuten ist alles normal bis 15 Minuten. Aber wenn die nächsten 15 Minuten kommen. Nachricht wird wieder sichtbar und so weiter. Hier Timer
Timer1:
_Timer = new Timer();
this._Timer.Interval = 1000 * 60 * 1;
this._Timer.Elapsed += new System.Timers.ElapsedEventHandler(this._Timer_Tick);
_Timer.Enabled = true;
Hier ist _Timer_Tick Methode
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;
Timer3:
_Timer03 = new Timer();
this._Timer03.Interval = 1000 * 60 * 60;
this._Timer03.Elapsed += new System.Timers.ElapsedEventHandler(this._Timer03_Tick);
_Timer03.Enabled = true;
mir jemand beste Ansatz führen kann, diese drei Operationen in Timer in Web Service
Ich bin mit SQL Server 2008R2 Express Edition
Dank
Könnten Sie die Durchführung der Aktie ' _Timer_Tick' Methode bei uns? –
@ botond.botos, ja sicher. Bitte überprüfen Sie den bearbeiteten Beitrag –
Warum haben Sie sich entschieden, diese Datenbankoperationen in einen Webdienst zu stellen? Die Implementierung als Windows-Dienst scheint angemessener zu sein. Oder Sie können es als eine einfache Konsolenanwendung implementieren, die von einem Taskplaner aufgerufen wird, so dass Sie sich nicht um den 'Timer'-Teil kümmern müssen. –