Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

call Tick event when timer starts [duplicate]

Tags:

c#

timer

I'm using 'System.Windows.Forms.Timer' to repeat a task. But when the timer starts, I have to wait for one interval before the task starts. The interval is set to 10 seconds to give the task enough time to do it's thing. But there is an 'awkward silence' waiting for it to start the first time. Is there a way to trigger the Tick event when the timer is enabled? (I am unable to use threading, callbacks or events to get the task repeat)

private int counter;
Timer t = new Timer();

private void InitializeTimer()
{
    counter = 0;
    t.Interval = 750;
    t.Enabled = true;

    t.Tick += new EventHandler(timer1_Tick);
}

private void timer1_Tick(object sender, EventArgs e)
{
    if (counter >= 3)
    {
        t.Enabled = false;                
    }
    else
    {
        //do something here
        counter++;
    }
}
like image 820
topofsteel Avatar asked Aug 22 '12 12:08

topofsteel


2 Answers

You can always call your method manually:

private void InitializeTimer()
{
    counter = 0;
    t.Interval = 750;
    t.Enabled = true;
    timer1_Tick(null, null);

    t.Tick += new EventHandler(timer1_Tick);
}
like image 110
JleruOHeP Avatar answered Nov 20 '22 06:11

JleruOHeP


You could use a System.Threading.Timer.

This has a constructor that takes an initial wait period. Set this to zero and the timer will trigger the callback immediately then every interval you specify thereafter.

Timer stateTimer = new Timer(tcb, autoEvent, 0, 750);
like image 22
ChrisF Avatar answered Nov 20 '22 05:11

ChrisF