Entwickler-Ecke
Basistechnologien - Backgroundworker wird Doppelt ausgelöst
Maliko - Di 02.04.13 11:14
Titel: Backgroundworker wird Doppelt ausgelöst
Hi,
ich habe da mal eine Frage an euch. Und zwar habe ich das Problem, das ich in meinem Programm eine automatische Aktualisierung laufen habe, diese funktioniert auch einwandfrei, bis ich den Intervall ändere. Der Intervall wird zwar geändert, dafür wird der Backgroundworker dann allerdings zweimal direkt hintereinander angestoßen.
Hat jemand von euch vielleicht ne Ahnung woran das liegen kann? Ich ändere den Intervall auf folgende Art und weise:
C#-Quelltext
1: 2: 3:
| AutoSyncHandler.StopSyncronisation(true, false); AutoSyncHandler.ChangeIntervall(int.Parse(cb_Frachtenliste.Text), 0); AutoSyncHandler.StartSyncronisation(true, false); |
Dahinter verstecken sich folgende Funktionen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| public static void StartSyncronisation(bool frachtenliste, bool kundenliste) { if (frachtenliste) m_frachtenliste.Start();
if (kundenliste) m_kundenliste.Start(); } |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| public static void StopSyncronisation(bool frachtenliste, bool kundenliste) { if (frachtenliste) m_frachtenliste.Stop();
if (kundenliste) m_kundenliste.Stop(); } |
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| public static void ChangeIntervall(int frachtenliste, int kundenliste) { if (frachtenliste != 0) m_frachtenliste.Interval = frachtenliste * 60000;
if (kundenliste != 0) m_kundenliste.Interval = kundenliste * 60000; } |
Kann mir jemand von euch vielleicht sagen, was ich da übersehe? Danke euch schon einmal im Vorraus.
Lg Maliko
Th69 - Di 02.04.13 13:05
Hallo Maliko :welcome:
wo verwendest du denn da einen BackgroundWorker? Die Methoden Start, Stop sowie die Eigenschaft Interval gibt es bei der Klasse Timer - entweder aus dem Namensbereich System.Timers oder System.Windows.Forms, d.h. welchen verwendest du?
Maliko - Di 02.04.13 13:35
Hoi,
der Backgroundworker wird vom Tick-Event aus gestartet. Ich hab den Fehler inzwischen aber gefunden. Ich habe noch eine weitere Methode nämlich diese:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| public static void InitHandler(int frachtenliste, int kundenliste) { bool frachtenlisteBool = false; bool kundenlisteBool = false;
if (frachtenliste != 0) frachtenlisteBool = true;
if (kundenliste != 0) kundenlisteBool = true;
if (kundenlisteBool && frachtenlisteBool) { ChangeIntervall(frachtenliste, kundenliste); m_frachtenliste.Tick += new EventHandler(m_frachtenliste_Tick); m_kundenliste.Tick += new EventHandler(m_kundenliste_Tick); StartSyncronisation(true, true); } else if (kundenlisteBool && ! frachtenlisteBool) { ChangeIntervall(frachtenliste, kundenliste); m_kundenliste.Tick += new EventHandler(m_kundenliste_Tick); StartSyncronisation(false, true); } else if(!kundenlisteBool && frachtenlisteBool) { ChangeIntervall(frachtenliste, kundenliste); m_frachtenliste.Tick += new EventHandler(m_frachtenliste_Tick); StartSyncronisation(true, false); } } |
und die Methode habe ich ausversehen noch einmal aufgerufen, wenn ich den Intervall geändert habe (weil ich vergessen habe den in eine If Abfrage zu packen). Jetzt funktioniert es einwandfrei. Es handelt sich übrigens um System.Windows.Forms
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!