Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como criar um timer em C#?

Olá,

Gostaria de saber como criar um temporizador em C#; Eu preciso de algo que faça mais ou menos isso:

// Aqui ele deve esperar 1 segundo e devolver 'true'
var PassaTempo = SenhorDoTempo.Avancar(1000);

Eu tentei com esse código, mas não deu muito certo.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HeroCombat
{
    static class SenhorDoTempo
    {
        public bool Avancar(int time)
        {
            public void InitializeTimer()
            {
                Timer1.Interval(time);
                Timer1.Tick += new EventHandler();
            }

            Timer1.Enabled = true;
            Timer1.Enabled = false;

            return true;
        }
    }
    }
}

Agradeço a ajuda (indicações de aulas com esse assunto são bem-vindas)

1 resposta
solução!

Olá amigo, Creio que seu código não tenha funcionado, pois você habilita e desabilita o seu timer sem condicionar a uma lógica, a instrução enable é setada como true e em seguida como false, no mesmo método avançar, isso faz com que o seu timer perca o sentido de existir. Uma forma de solucionar isso é criar um contador e quando seu timer atingir o tempo condicionado (IF) ele é desabilitado, parando automaticamente, caso contrário, aumenta o contador. Basta você invocar o InitializeTimer no evento desejado do seu código (no click de um botão por exemplo).

private int counter;

private void InitializeTimer(int interval)
        {
            counter = 0;
            timer1.Interval = interval;
            timer1.Enabled = true;
            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
        }

        private void timer1_Tick(object sender, System.EventArgs e)
        {
            if (counter >= 1000)
            {
                timer1.Enabled = false;
                counter = 0;
            }
            else
            {
                counter = counter + 1;
                // você pode mostrar o resultado aonde desejar
        label1.Text = "O timer está em: " + counter.ToString();  
            }
        }