Laden...

Timing Probleme

Erstellt von MarekEs vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.082 Views
M
MarekEs Themenstarter:in
2 Beiträge seit 2007
vor 16 Jahren
Timing Probleme

Hallo!

Ich hab ein kleines Problem. Ich kommuniziere mit einem Gerät dass an der seriellen Schnittstelle hängt. Es funktioniert auch alles wunderbar solange ich das Fenster der Applikation nicht bewege bzw minimier oder so.

Das Problem liegt darin, dass ich um mit dem Gerät zu kommunizieren bestimmte Timings einhalten muss. Das habe ich mit Thread.Sleep gemacht. Wenn man nun allerdings mit dem Fenster "rumspielt" scheinen diese Timings durcheinander zu geraten. Dieses Verhalten tritt unabhängig davon auf ob ich die Kommunikation im Hauptthread durchführe oder in einem eigenen. Ich habe auch schon probiert die Priorität des Hauptthreads auf niedrig(st) und die des Kommunikationsthread auf maximal zu stellen. Aber das ändert leider gar nix.

In meiner Not habe ich sogar probiert einfach alle Window-Messages abzufangen, solange der Kommunikationsthread (readDataThread) läuft:


protected override void WndProc(ref Message m)
        {
            if ((readDataThread == null) || (readDataThread.IsAlive == false))
            base.WndProc(ref m);
        }

Aber auch das brachte nicht den gewünschten Erfolg.

Vielleicht hat jemand ne Idee, bzw hatte schonmal ein ähnliches Problem??

Bin für alle Anregungen offen!!!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo MarekEs,

Windows ist kein Echtzeitbetriebssystem. Es gibt keine Möglichkeit sicherzustellen, dass ein bestimmtes Timing garantiert eingehalten wird.

herbivore

B
1.529 Beiträge seit 2006
vor 16 Jahren

Für solche Fälle nicht den Timer aus System.Windows.Forms sondern den aus System.Threading verwenden. Der läuft unabhängig vom GUI (weil nicht über die MessageLoop).