Autor Beitrag
nitin2211
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 06.04.09 12:04 
Hallo
Ich habe ein Programm dass mit 2 Backgroundworkern arbeitet. Diese sind dazu da ein Filehandling zu übernehmen... also ZIP Dateien entpacken und hin und her auf verschiedene Server zur weiteren Verarbeitung kopieren.
Das Programm läuft bestens, bis auf der Tatsache, dass jedes Mal nach dem Wochenende (wo sich gar nix tut und er einfach so wartet) ein Backgroundworker nicht mehr arbeitet (er soll einen Ordner auf einen bestimmten Dateityp kontrollieren). Wenn ich den Prozess stoppe(ist durch einen Button im Programm möglich) und wieder neu starte funktioniert alles wieder wie vorher. StackOverflow kann es nicht sein, weil es keine rekurisven Methodenaufrufe gibt. Es gibt lediglich eine "endlosschleife" in der er einfach wartet, die mit einem Sleep verzögert wird. Gibt es irgendwelche Ansätze wo das Problem liegen könnte? Ich habe keinen ähnlichen Fall im Internet gefunden... das wichtige an der Applikation ist, dass sie "unendlich" lange laufen soll, dass heißt deswegen so wartungsfrei wie möglich sein sollte.
ausblenden 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:
        private void out()
        {
            //Standardmäßige Wartezeit in ms
            int wait = 3000;
            //Überprüfung ob die Applikation wirklich gestartet ist und kein Abbruch angefordert wurde.
            while (out_active)
            {
                if (!out_bgw.CancellationPending)
                {
                   if (out_progress == 0)
                   {
                      out_msg = "Warte auf Dateien...\r\n";
                   } else 
                   {
                      arbeiten();
                      out_progress = 1;
                      out_msg += "Fertig\r\n";
                   }
                }
                else
                {
                    out_msg = "Wird abgebrochen...\r\n";
                }
                //Meldungen werden mit Progresscode verarbeitet. Es wird ein Intervallschlaf gestartet, 
                //der die Ansprechbarkeit während des Schlafs ermöglicht.
                out_bgw.ReportProgress(out_progress);
                takeNap(wait, out_bgw);
            }
        }


Danke im vorraus!
lg Nitin

Moderiert von user profile iconKha: Code- durch C#-Tags ersetzt
Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Mo 06.04.2009 um 18:35
nitin2211 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 07.04.09 16:31 
Hallo
Hab den Fehler inzwischen gefunden.
Es hat daran gelegen, dass der Server wo er den bestimmten Dateityp sucht, am Wochenende gewartet wird. Das heißt, dass die Maschine neu gestartet wird. Mein Programm hat den Pfad verloren und nicht mehr wieder gefunden (und noch nichtmal eine fehlermeldung ausgegeben). Also der Backgroundworker war in ordnung.
mfg Nitin