Announcement

Collapse
No announcement yet.

Timer Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Timer Problem

    Servus Leute,

    habe ein Problem mit dem Windows.Forms.Timer in Kombination mit einer Konsolenanwendung das folgendermaßen aussieht:

    Ich hab ne Konsolenanwendung, in der ein Timer gestartet werden soll.
    Wenn das Event auftritt soll eine Aktion durchgeführt werden (Wer hätte das gedacht )

    Das Problem ist, das das Event nicht gefeuert wird, bzw. nur dann wenn ich eine MessageBox zeige und diese aktiv ist.
    Mit anderen Worten der Code springt nie in den Eventhandler es sei denn die MessageBox ist aktiv. Und das kann ich nicht gebrauchen.

    Kann da jemand helfen?

  • #2
    Hallo,

    vielleicht solltest Du Dir als erstes Die Frage stellen, warum der Timer den DU verwendest, in dem Namespace System.Windows.Forms liegt?! So wie ich das aus Deinem Text entnommen habe, ist Dein Projekt ein Consolen Project.

    Das sollten Dann zwei Komponenten sein die nicht haften ;-)

    Vielleicht kannst DU ja etwas genauer beschreiben was Du da vorhast und auf welches Event Du genau wartest.

    HTH
    TOM_MUE

    Comment


    • #3
      Ich entwickel eine Anwendung für den Pocket PC und hab da leider noch keinen Timer gefunden der funktioniert. Der System.Windows.Forms.Timer schein mir zunächst die trivialste Lösung.
      Deshalb hab ich den mal ausprobiert. Scheint jedoch so nicht zu funktionieren, obwohl ich das Problem nicht ganz verstehe. Scheint ja so zu sein, als das der Timer wartet bis ein Form angezeigt wird bis er seinen Dienst aufnimmt.

      Bin eigentlich nicht an diesen Timer gebunden, könnte jeden anderen nehmen. Habs auch schon mit dem OPENNETCF.Timers.Timer2 probiert, jedoch wird der nicht unter Windows Mobile unterstützt, da er auf dem MulitmediaTimer basiert.

      This precirsion timer can be used to generate recurring events in an application. It is dependent on platform support of the Multimedia Timer, which is not in Windows mobile
      Falls es da nen Timer gibt den ich verwenden kann immer her damit. Probier da schon zu lange rum.

      Comment


      • #4
        Hallo,

        nun es gibt noch einen Timer aus dem Namespace System.Threading. Dieser wird auch im .NET Compact Framework 1.x und 2.0 unterstützt.

        System.Threading.Timer

        Du hast aber nicht erklärt was Du mit dem Timer umsetzen oder erreichen möchtest.

        HTH
        TOM_MUE

        Comment


        • #5
          Ich möchte ein alle 250 ms ein Ereignis auslösen, um darin einen Tastendruck zu simulieren.

          Code:
          //Wiederholungsintervall für Tastenwiederholung
          timer.Interval = 250;                 
          timer.Elapsed += new ElapsedEventHandler(timer_KeyTick);
          timer.Enabled = true;
          Und dann die entsprechende EventHandler-Methode

          Code:
          private void timer_KeyTick(object sender, EventArgs e)
          {            
                 SendKeys.Send(activeKey);
          }
          Diesen Timer hab ich mir schon mal angeschaut, aber bin nicht so richtig schlau geworden draus. Hab das Prinzip noch nicht so ganz verstanden, bzw. was wird dafür im einfachsten Fall benötigt.
          Zuletzt editiert von Gast_1; 05.04.2007, 14:26.

          Comment


          • #6
            Habs geschafft, es funktioniert.

            Also ich hab die ganze Sache mit dem System.Threading.Timer() gemacht. War gar nicht so kompliziert wie´s aussah.
            Hier der Code.

            zur Initialisierung:
            Code:
            // Create the delegate that invokes methods for the timer.
            TimerCallback timerDelegate = new TimerCallback(timer_KeyTick);
            timer = new System.Threading.Timer(timerDelegate,this, Timeout.Infinite, Timeout.Infinite);
            Und dann zum starten:
            Code:
            timer.Change(keyMoveOffset, keyMoveIntervall);
            und das Delegat dazu:
            Code:
            private void timer_KeyTick(Object stateInfo)
            {            
                 SendKeys.Send(activeKey);
            }

            Super, danke.

            Comment

            Working...
            X