定时器启动时调用Tick事件

top*_*eel 6 c# timer

我正在使用'System.Windows.Forms.Timer'来重复任务.但是当计时器启动时,我必须在任务开始之前等待一个间隔.间隔设置为10秒,以便给任务足够的时间来完成它.但是有一种"尴尬的沉默"等着它第一次开始.有没有办法在启用计时器时触发Tick事件?(我无法使用线程,回调或事件来重复任务)

    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++;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Jle*_*HeP 8

您始终可以手动调用方法:

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

    t.Tick += new EventHandler(timer1_Tick);
}
Run Code Online (Sandbox Code Playgroud)

  • 就个人而言 - 我认为像这样调用事件处理程序是臭的:http://en.wikipedia.org/wiki/Code_smell (3认同)

Chr*_*isF 8

你可以用一个System.Threading.Timer.

这有一个构造函数,需要一个初始等待期.将此值设置为零,计时器将立即触发回调,然后是您之后指定的每个间隔.

Timer stateTimer = new Timer(tcb, autoEvent, 0, 750);
Run Code Online (Sandbox Code Playgroud)