2 Stimmen

Erzwingen eines Zeitablaufs in einer bestimmten Zeit [C#]

Ich schreibe ein VB 6.0 Programm in C# .Net für ein Praktikum um. Es misst eingehende Daten von einer Präzisionsschleifmaschine und gibt eine Anzeige über die Genauigkeit. Ein großer Teil des Programms wird innerhalb eines Timer-Objekts mit einem Intervall von 10 ausgeführt. Das Programm ist noch nicht fertig, so dass es noch an einer tatsächlichen Maschine getestet werden muss, aber ich habe eine Debug-Simulation, die eine Sin-Welle erzeugt (um sicherzustellen, dass beim Empfang von Daten die Zifferblätter und Zahlen alle wie erwartet funktionieren).

Ich verwende WinForms und das Timer-Objekt, nicht System.Threading.Timer (obwohl, wenn das wie eine bessere Option klingt, auf jeden Fall bin ich offen für die Verwendung von es). Ich habe System.Diagnostics.Stopwatch ElapsedTicks verwendet, um zu messen, wie viele Ticks der Timer im Durchschnitt braucht, um von Anfang bis Ende zu laufen. Auf Formular1 benötigt der Timer im Allgemeinen etwa 19500 Ticks. Wenn er zu Formular2 wechselt, sinkt diese Zahl auf etwa 15000, und bei Formular3 sogar auf 11000.

Nun macht es Sinn, dass Form3 schneller ausgewertet wird, weil es einige Teile des Codes überspringt, die nicht ausgeführt werden müssen. In Form2 sollte der gesamte Timer ausgeführt werden. Seltsam ist, dass der Timer nach dem Wechsel zu Form2 und dann zurück zu Form1 bei etwa 16000 bleibt und jedes Mal etwas schneller wird, wenn ich zwischen den Formularen wechsle. Das Intervall bleibt immer konstant bei 10.

Ich bin mir nicht sicher, woran das liegt oder wie ich eine konstante Geschwindigkeit erzwingen kann. Außerdem bin ich mir nicht sicher, ob es überhaupt eine Rolle spielt. Es hat mich sehr gestört, aber ich bin nicht sicher, ob es eine Rolle spielt, dass die Auswertung schneller ist, wenn das Programm tatsächliche Daten von einer Maschine empfängt.

Wenn jemand einen Vorschlag hat, warum sich die Zeitschaltuhr so verhält, wie sie sich verhält, oder wie man sie so einschränken kann, dass sie mit einer konstanten Rate läuft, oder sogar, ob ich mir darüber Gedanken machen sollte oder nicht, wären wir Ihnen sehr dankbar.

Vielen Dank für Ihre Zeit

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X