C# Timer -> Tick mit 1ms funktioniert nicht

Gast #4250808
Lesenswert?
• ▲
▼
Serus,

ich bin ziemlich neu bei C# und daher habe ich vielleicht einfach ein 
Verständnisproblem.

Ich habe einen Timer definiert mit dem Interval 1ms:
1
// 
2
            // timer1
3
            // 
4
            this.timer1.Enabled = true;
5
            this.timer1.Interval = 1;
6
            //


Also lasse ich jede Millisekunden über Tick einen Wert hochzählen.
1
void t1_Tick(object sender, EventArgs e)
2
        {
3
            if (serialPort.IsOpen)
4
            {
5
                //How many rows exist
6
                int nCANMSG_send = dataGridView_send.Rows.Count;
7
                while (nCANMSG_send > 0)
8
                {
9
                    nCANMSG_send--;
10
                    dataGridView_send.Rows[nCANMSG_send].Cells["amount_send"].Value = Convert.ToInt32(dataGridView_send.Rows[nCANMSG_send].Cells["amount_send"].Value.ToString()) + 1;
11
                }        
12
            }
13
        }

Wenn ich sehe wie das hochgezählt wird, sieht direkt, dass es nie 1ms 
ist. Daher frage ich mich ob der Timer für 1ms überhaupt funktioniert 
und wie genau er ist? Oder mache ich was falsch?

Gruss Stefan
Persönliche Seite #4250820
Lesenswert?
• ▲
▼
Timer arbeiten unter Windows normalerweise mit gröberen Auflösungen. Die 
Granularität lässt sich aber mit den Multimedia-Timer-Funktionen aus der 
Win32-API verändern, so daß die Minimalauflösung 1 msec beträgt.

Das sind timeBeginPeriod und timeEndPeriod.

https://msdn.microsoft.com/de-de/library/windows/desktop/dd757624%28v=vs.85%29.aspx
https://msdn.microsoft.com/de-de/library/windows/desktop/dd757626%28v=vs.85%29.aspx

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren