XspYroX Geschrieben 18. Januar 2013 Geschrieben 18. Januar 2013 Hi Hab einen Service in C# programmiert und dieser besitzt einen Timer, der die Haupt-Aufgabe in einem bestimmten Interval (z.b. alle 15 Minuten) ausführt. Jetzt würde ich gerne einbauen, dass jedes mal, wenn das timer-ereignis ausgeführt wird, eine MySQL-Verbindung aufgebaut wird und der timer-interval aus der DB gelesen wird. Der eingelesene Timer-Interval soll dann der neue Interval für den laufenden Timer werden. Mein Problem ist das Zugriffsrecht: ... public class service : ServiceBase { public static void timerInit() { System.Timers.Timer checkTimer = new System.Timers.Timer(); checkTimer.Enabled = true; checkTimer.Interval = 900000; checkTimer.Elapsed += new System.Timers.ElapsedEventHandler(checkTimer_Elapsed); } public static void checkTimer_Elapsed(object sender,System.Timers.ElapsedEventArgs e) { string[] settings = updateSettings(); checkTimer.Interval = Convert.ToInt32(settings[2]) * 60000; checkScan(); } In der vorletzten Zeile bei "checkTimer.Interval" wird "checkTimer" rot unterstrichen mit der meldung, dass der name "checkTimer" im aktuellen Kontext nicht verfügbar ist. Ich schließe mal auf einen Berechtigungskonflikt, weiß aber nicht, wie ich den beheben soll. Die Google-Ergebnisse havben mir aucg nicht helfen können :/ Jemand ne Idee? ._. LG XspYroX Zitieren
Klotzkopp Geschrieben 18. Januar 2013 Geschrieben 18. Januar 2013 checkTimer ist eine lokale Variable innerhalb timerInit. Die ist in anderen Methoden natürlich nicht bekannt. Wenn du sie methodenübergreifend benutzen willst, solltest du einen Member daraus machen. Zitieren
XspYroX Geschrieben 18. Januar 2013 Autor Geschrieben 18. Januar 2013 Hmmm.... Ich bin noch etwas neu in der C#-Geschichte. Hab jetzt online bei "Member C#" nur Klassen gefunden. Muss ich dafür Klassen erstellen? Oder geht das auch ohne? Wenns kein großer Aufwand ist, könnt ihr mir nen Code-Snippet geben? Aber danke schonmal für die Hilfe =) LG XspYroX Zitieren
Klotzkopp Geschrieben 18. Januar 2013 Geschrieben 18. Januar 2013 Ich bin noch etwas neu in der C#-Geschichte.Dann solltest du dringend ein paar Grundlagen lernen, bevor du anfängst, Dienste zu entwickeln. Hab jetzt online bei "Member C#" nur Klassen gefunden. Muss ich dafür Klassen erstellen? Oder geht das auch ohne?Du hast schon eine Klasse. Du hast sie service genannt: public class service Zitieren
lbm1305AtWork Geschrieben 18. Januar 2013 Geschrieben 18. Januar 2013 Hab jetzt online bei "Member C#" nur Klassen gefunden. Member (C#-Programmierhandbuch) Zitieren
uenetz Geschrieben 18. Januar 2013 Geschrieben 18. Januar 2013 Ich vermute einmal, dass nicht nur eine Membervariable benötigt wird, sondern auch ein Restart des Timers nach Änderung der Konstanten (mInterval) Zitieren
lbm1305AtWork Geschrieben 18. Januar 2013 Geschrieben 18. Januar 2013 Ich vermute einmal, dass nicht nur eine Membervariable benötigt wird, sondern auch ein Restart des Timers nach Änderung der Konstanten (mInterval) Würde da der Timer nicht als eintige Membervariable reichen? Zitieren
uenetz Geschrieben 18. Januar 2013 Geschrieben 18. Januar 2013 Würde da der Timer nicht als eintige Membervariable reichen? Wie soll der Timer die Änderung des Wertes von Interval mitbekommen? Zitieren
lbm1305AtWork Geschrieben 18. Januar 2013 Geschrieben 18. Januar 2013 Wie soll der Timer die Änderung des Wertes von Interval mitbekommen? Wenn das Timer-Objekt als Klassenmember definiert ist, ist das sicherlich kein Problem. Ansonsten gibt es noch Events. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.