0

我有 5 种方法,我需要在随机间隔(1 到 3 秒)的时间后调用它们。说第一个方法在 1 秒后调用,然后在 2.3 秒后调用第二个方法,在 1.5 后调用下一个方法等。我使用计时器进行了以下操作

System.Windows.Forms.Timer mytimer = new System.Windows.Forms.Timer();
mytimer.Tick += new EventHandler(TimerEventProcessor);    
Random rand = new Random();
int fortimerinterval = rand.Next(1000, 3000);
mytimer.Interval = fortimerinterval; 
mytimer.Enabled = true;
mytimer.Start();

    public void TimerEventProcessor(Object myObject, EventArgs myEventArgs)
    {
        fortimerinterval = rand.Next(1000, 3000);
        mytimer.Interval = fortimerinterval; 
        first time call function1, then call function2
        //this is main theme, so im not giving whole code here


    }

但定时器间隔在获得第一个随机值后保持不变。似乎每次调用 TimerEventProcessor 时,timerinterval 的值都不会改变。我怎样才能做到这一点?或者,如果有任何其他简单的方法可以做到这一点。谢谢

4

1 回答 1

0

我对您的代码进行了一些修改并进行了尝试。它工作正常。

Random rand = new Random();
Timer mytimer = new Timer();

private void fireTimerClick(object sender, EventArgs e)
{
    mytimer.Tick += new EventHandler(TimerEventProcessor);
    mytimer.Interval = rand.Next(1000, 3000);
    mytimer.Enabled = true;
    mytimer.Start();
}

public void TimerEventProcessor(Object myObject, EventArgs myEventArgs)
{
    mytimer.Interval = rand.Next(1000, 3000);

    System.Diagnostics.Debug.WriteLine(DateTime.Now);
}

您可以使用调试输出窗口验证这一点。fireTimerClick只是一个按钮单击事件处理程序。

于 2013-04-01T06:39:13.717 回答