Autor Beitrag
DonErnus
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 17.03.09 12:24 
Hi @ all,

ich habe ein kleines Timer Problem, ich habe mnoch nicht viel mit dem Timer gemacht, und das ist auch nur ein die vorarbeit die ich für mein Projekt brauche also

hier mal mein code

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
      public void timer_tool()
        {
            Timer ti = new Timer();
            ti.Interval = 1000;
            ti.Elapsed += new ElapsedEventHandler(timer_Elapsed);
            ti.Start(); 
           
        }
        private void timer_Elapsed(Object sender, ElapsedEventArgs e)
        {
            DateTime zeit = DateTime.Now.Date.AddHours(22).AddMinutes(59);
            DateTime time_dahinter = DateTime.Now.Date.AddHours(23);
            if (zeit >= time_dahinter)
            {
                Console.WriteLine("test");
            }
            else {}
        }

ansich einfach der timer so im hinetrgrungd laufen mit einem bestimmten Intervall und dan wen der intervall durchgelaufen ist das event straten mit der if abfrage, und wen die if abfrage nicht besttätigt ist soll das ganze ding weiter laufen.

Ist sozusagen mein code anfang und komme jetzt nicht weiter. Da ich vermute das er das event nichtmal durchläuft (Gehe gleich mim Debugger durch).

Habe ich vllt einen denk fehler ? Bzw gehe ich an den Timer falsch ran ? wie gesgat habe mit dem Ding noch nicht viel geamcht und recht neu in C#, kann aber Programmieren (java seid 4 jahren).

Gruß und Danke schonmal
DonErnus
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 17.03.09 14:09 
Hallo,

Dein Grundfehler ist der Geltungsbereich der Variablen. In der void-Methode timer_tool wird der Timer deklariert, dann erzeugt und gestartet - und wenn die Methode beendet ist, ist alles, was dort deklariert wurde, wieder vergessen und wird dem GC (Garbage Collector) zum Aufräumen überlassen. Selbst wenn der Timer länger gültig wäre, würde er nichts Sinnvolles machen können, denn auch die Variablen zeit und time_dahinter sind nur an dieser einen Stelle gültig und liefern bei der if-Abfrage niemals "wahr".

Vorschlag: Erstelle eine WinForms-Anwendung, ordne dem Hauptfenster einen Timer zu (den gibt es in der Toolbox, ggf. musst Du die Rubrik "Komponenten" o.ä. suchen) und erstelle über das PropertyGrid und die Aufstellung aller Ereignisse passende Methoden. Dann kannst Du alles nachlesen, wie es im Programm aussehen sollte.

Bitte beachte: Es gibt drei verschiedene Timer, die sich in der Arbeitsweise ein wenig unterscheiden. Für WinForms gibt es System.Windows.Forms.Timer.

Gruß Jürgen
DonErnus Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 17.03.09 15:02 
Alles Klaro Danke an dich Jürgen.
Werd das dan mal so machen ;)