wie man eine Funktion innerhalb eines service-alle 10 Minuten?
Ich habe einen windows-Dienst ausgeführt wird, in diesem möchte ich eine Funktion auszuführen, die jeder dann die Minuten.
Ich habe einige code, aber es scheint nicht zu funktionieren?
Ich habe einen logger und scheint es nicht zu gehen in die timer_Elapsed Funktion überhaupt?
protected override void OnStart(string[] args)
{
//SmartImportService.WebService.WebServiceSoapClient test = new WebService.WebServiceSoapClient();
//test.Import();
log.Info("Info - Service Started");
_timer = new Timer(10 * 60 * 1000); //every 10 minutes??
_timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
}
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
log.Info("Info - Check time");
DateTime startAt = DateTime.Today.AddHours(9).AddMinutes(48);
if (_lastRun < startAt && DateTime.Now >= startAt)
{
//stop the timer
_timer.Stop();
try
{
log.Info("Info - Import");
SmartImportService.WebService.WebServiceSoapClient test = new WebService.WebServiceSoapClient();
test.Import();
}
catch (Exception ex) {
log.Error("This is my error - ", ex);
}
_lastRun = DateTime.Now;
_timer.Start();
}
}
Müssen Sie rufen Sie start auf dem Timer?
siehe stackoverflow.com/questions/246697/windows-service-and-timer
ahhh yeeeeeeeee
warum?
siehe stackoverflow.com/questions/246697/windows-service-and-timer
ahhh yeeeeeeeee
warum?
DateTime.Today.AddHours(9).AddMinutes(48);
InformationsquelleAutor Beginner | 2012-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Sie benötigen, um den timer zu starten:
TimeSpan.FromMinutes(10).TotalMilliseconds;
statt10 * 60 * 1000
InformationsquelleAutor Daniel Hilgarth
Sehe ich nicht
_timer.Start()
, das sollte Ihr problem sein.InformationsquelleAutor Tigran
Brauche ich diese Funktionalität auch. Das heißt, meine C# - windows-Dienst muss überprüfen, E-Mails alle 10 Minuten. Ich zog Sie etwas Logik, um den code effektiver, wie folgt :
Den timer_elapsed Methode wird in der Tat sein, rufen alle 10 Minuten, angefangen von der ersten _timer.start () ein, die Sie verpassen übrigens. Ich bin noch nicht zum prüfen der _lastRun und startAt. Ich glaube nicht, dass wir es brauchen
InformationsquelleAutor swdev
Daniel Hilgarth ist richtig - das Hauptproblem ist, dass Sie nie rufen Sie Start auf dem timer.
Dass gesagt wird, möchten Sie vielleicht erwägen Sie auch mit dem Windows-Taskplaner anstelle eines service mit einem timer. Dies ermöglicht Ihnen die Planung die Aufgabe, alle 10 Minuten, aber auch ändern Sie den Zeitplan, wenn gewünscht, ohne eine Zusammenstellung ändern.
InformationsquelleAutor Reed Copsey
Versuchen Sie, beginnend die
timer
,InformationsquelleAutor FIre Panda