El intervalo del temporizador es más pequeño que la función en el evento de marca

Tengo un timer con 10 segundos interval and on timer_Tick Evento, hago algunas cosas que generalmente necesitan alrededor de un segundo, pero a veces necesitan más de 90 segundos. ¿Cómo actuará? ¿Este evento es sincrónico para esperar el eventhandler para terminar de ejecutar? Probé pero aún necesito una respuesta...

private void checkTimer_Tick(object sender, EventArgs e)
{
    MessageBox.Show("Test");   
    for (int i = 0; i < 2000000000; i++)
    {

    }
    MessageBox.Show("Test");
}

cuando lo pruebo después del primer tic MessageBox se muestra. No hago clic en Aceptar y espera otro tick. Y otro MessageBox se muestra en el tick de segundos y así sucesivamente...

in Documentación de MSDN Leí que es sincrónico... ¿Alguna idea?

preguntado el 31 de julio de 12 a las 10:07

¿Qué tarea estás realizando realmente dentro del timer_tick? puedes dar el codigo -

¿Dónde leíste que es sincrónico? No puedo ver en la página que vinculó donde se menciona esto. -

2 Respuestas

Lo resolví agregando la desactivación del temporizador al comienzo del evento de tic y la activación al final del evento de tic. Me gusta esto

private void checkTimer_Tick(object sender, EventArgs e)
        {
            checkTimer.Enabled = false;
            MessageBox.Show("Test");   
            for (int i = 0; i < 2000000000; i++)
            {

            }
            MessageBox.Show("Test");
            checkTimer.Enabled = true;
        }

Respondido 31 Jul 12, 10:07

no veo nada en el System.Windows.Timers La documentación a la que se vinculó menciona que se está sincronizando. Si desea que cada evento de Tick espere hasta que finalice el evento de Tick anterior. Detenga el temporizador al comienzo de su controlador y reinícielo una vez que haya terminado su trabajo. Eso es lo que muestra la documentación de MSDN.

Respondido 31 Jul 12, 10:07

Sí, lo es. Dejé mi respuesta para aclarar que no hay nada en la documentación que mencione que el evento se está sincronizando: Mark Hall

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.