System.Windows.Forms.Timer() tickt nicht

Hallo,

ich habe schon häufiger den System.Windows.Forms.Timer() eingesetzt und er hat immer funktioniert. Nun habe ich eine Form in einem neuen Thread gestartet (ein Statusbalken) und möchte, dass in diesem Form der Timer läuft. Wie gesagt, die ganze Form wird in einem neuen Thread instanziiert. Der Timer, der darin instanziiert und gestartet wird, scheint jedoch darin keinen Event auszulösen, „timer_Tick(System.EventArgs)“ wird nicht aufgerufen.

Weiß jemand, was das sein kann?

Danke im Voraus
Alexander

Auch hallo.

ich habe schon häufiger den System.Windows.Forms.Timer()
eingesetzt und er hat immer funktioniert. Nun habe ich eine
Form in einem neuen Thread gestartet (ein Statusbalken) und
möchte, dass in diesem Form der Timer läuft. Wie gesagt, die
ganze Form wird in einem neuen Thread instanziiert. Der Timer,
der darin instanziiert und gestartet wird, scheint jedoch
darin keinen Event auszulösen, „timer_Tick(System.EventArgs)“
wird nicht aufgerufen.

Weiß jemand, was das sein kann?

…nicht ohne Quellcode, Angabe des .NET Frameworks (1.1 ?),
der Windowsversion, der verwendeten IDE, usw…
Aber hier ein paar evtl. nützliche Resourcen:
http://www.dotnet-magazin.de/itr/online_artikel/psec…
http://www.dotnet-magazin.de/itr/online_artikel/psec…
http://www.dotnet-project.de/search.aspx?q=System.Wi…
http://www.glengamoi.com/cgi-bin/htsearch?method=and…
http://www.entwickler-forum.de (suche nach System.Windows.Forms.Timer)

…und hier noch meine kleine Sammlung für .NET (offtopic):
http://www.dotnetpro.de
http://dotnet.sys-con.com/
http://www.tecchannel.de/entwicklung/programmierung/
http://www.gotdotnet.com
http://www.aspheute.com
http://www.dotnetgerman.com/

HTH
mfg M.L.

Hallo,

…nicht ohne Quellcode, Angabe des .NET Frameworks (1.1 ?),
der Windowsversion, der verwendeten IDE, usw…
Aber hier ein paar evtl. nützliche Resourcen:
http://www.dotnet-magazin.de/itr/online_artikel/psec…

Vielen Dank, da steht, dass der Windows.Forms-Timer (den ich benutzt hatte) immer nur im primären Thread ausgeführt wird. Ich werde es nun also mal mit dem System.Timers-Timer versuchen…

Gruß
Alexander

Hi!
Wie Du ja schon selbst festgestellt hast, ist der System.Windows.Forms.Timer dafür nicht geeignet. Dieser Timer verwendet nämlich die Nachrichten-Queue des Threads, in dem das GUI läuft.
Mit System.Timers.Timer wirst Du mehr Erfolg haben, aber eine Warnung hierbei: Denk’ unbedingt daran, dass Dein GUI nicht von außerhalb des Threads aktualisiert werden darf, der die Controls auch angelegt hat.
Im Elapsed-Event dieses Timers bist Du in einem anderen Thread, Du musst dort also mit Invoke oder BeginInvoke arbeiten, um Dein GUI zu aktualisieren.

Wird häufig vergessen, weil es anfangs durchaus gut gehen kann, wenn man es falsch macht. Aber irgendwann rächt es sich garantiert…

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]