¿Son precisos los Timers y Loops en .Net?

Mientras desarrolla un programa para calcular la frecuencia y el ancho de pulso del pulso generado por un 555 temporizador IC, llega a la PC a través del puerto paralelo de la PC. Noté que cada vez que ejecuto el código muestra valores diferentes, así que comienzo a probar los bucles y los temporizadores para verificar su precisión. He ejecutado el siguiente código y llegué al punto de que son inexactos (podría estar equivocado, corríjame si lo soy):

Para los temporizadores:

    int sec = 0;
    private void button2_Click(object sender, EventArgs e)
    {
        sec = DateTime.Now.Second;
        i = 0;
        timer1.Enabled = true;
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        if (sec == DateTime.Now.Second)
        {
            i++;
        }
        else
        {
            timer1.Enabled = false;
            MessageBox.Show(i.ToString(),"Timer Output");
        }
    }

SALIDA: Debería ser igual, pero:

En bucle:

    private void button1_Click(object sender, EventArgs e)
    {
        i = 0;
        CheckForIllegalCrossThreadCalls = false;
        Thread t1 = new Thread(LoopTest);
        t1.Start();
    }

    void LoopTest()
    {
        System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
        sw.Start();
        this.Cursor = Cursors.WaitCursor;
        while (true)
        {
            if (sw.ElapsedMilliseconds != 1000)
            {
                i++;
            }
            else
            {
                break;
            }
        }
        sw.Stop();
        this.Cursor = Cursors.Default;
        MessageBox.Show(i.ToString(), "Loop Output");
    }

SALIDA: Debería ser igual, pero:

¿Qué debo hacer para que los bucles y el temporizador sean precisos? ¿Hay alguna forma de hacerlo? ¿O tengo que ir al código C duro y complejo y al DOS?

Creo que es la razón básica para darme valores erróneos en esta pregunta:Frecuencia de entrada del puerto paralelo de recuento - C #

Respuestas a la pregunta(4)

Su respuesta a la pregunta