C# Timer startet nach dem stoppen nicht neu



  • Hi,

    ich habe ein Problem mit den
    System.Windows.Forms
    timern.

    Ich instanziere mir einen, setze das intervall und die aufruffunktion.
    Dann starte ich. Nach einer Weile deaktiviere ich ihn.

    Wenn ich jetz versuche ihn neu zu starten, geht das nicht.
    Das Enabled flag ist zwar auf true, aber er feuer nicht mehr.

    Woran kann das liegen ???

    grüße



  • Wo speicherst Du denn die Instanz?



  • Als Klassenmember.

    Momentan versuche ich ihn beim stoppen zu zerstören,
    und dann einen neuen zu mchen und den dann starten. Das will aber auch nicht.....



  • Keiner ne Idee ???
    Ich mein man müßte doch Timer so oft starten und stoppen können wir man gerne möchte.



  • Nochmal die Frage: Wo speicherst Du die Instanz?



  • Also ich habe was in der Art:
    (Die Timer sind Form timer)

    class a : b
    {
    
    private Timer _tim;
    
    public a()
    {
     _tim=new Timer();
    ...
    .../*Intervall,Tick setzen*/
    
    }
    
    public _start_timer()
    {
    
    _tim.start();
    }
    
    public _stop_timer()
    {
    
    _tim.stop();
    }
    
    }
    

    Also Konstuktor, dann an machen, und stoppen geht alles.
    Wenn ich dann versuche ihn nochmals zu starten .... passiet nüschts.
    Die Frage wo ich den Timer speicher weiß ich nicht wie sie gemeint ist.
    Wobei ein Timer ein eigenern Thread sein wird.
    Die Resourcen sind die gleichen wie im Prozess, müßte doch gehen...
    Also ich weiß nicht so richtig wo du drauf raus willst.

    Wenn ich ein wichtiges Konzept von C# nicht verstanden habe, dann bitte drauf verweisen damit ich mir es aneigne.

    Gruß



  • Sollte so ein Timer Bestandteil eines Containers sein ???
    Es es besser einen anderen Timer zu nehmen ??.

    Grüße



  • Okay, ich benutze die System.Timers.Timer.
    Deren Verhalten konvergiert =)....

    Grüße und danke für Hilfe.



  • Du könntest ja mal versuchen statts mit Start() und Stopp() des Timers zu arbeiten, Enabled = false / true; an der jeweiligen Stelle zu setzen.

    -> Bei mir klappte das mit Start() / Stopp() auch nie, mit der Variante direkt das Enabled zu setzen klappt es hingegen.



  • Jop du hast ein Wichtiges Konzept nicht verstanden.
    Der Forms.Timer benötigt eine Nachrichtenschleife im selben Thread.
    Du benötigst jedoch einen Nachrichtenschleifen unabhängigen Timer. Aber den hast du ja bereits gefunden 🙂



  • Thx, habe ich mir schon gedacht =)...
    Danke für so ne Hilfe, bin neu in C# und erwarte förmlich sole Sachen...

    grüße


Log in to reply