以随机间隔运行函数 C#

ehm*_*mlv -1 c# timer system.timers.timer

我在构造函数中调用了下面这个函数:

 public void IntervalSC()
 {
     Random rnd = new Random();
     double interval = rnd.Next(2000, 6000);
     var SCTimer = new System.Timers.Timer();
     SCTimer.Elapsed += new ElapsedEventHandler(dashboardController.Screenshot);
     SCTimer.Interval = interval;
     SCTimer.Enabled = true;
 }
Run Code Online (Sandbox Code Playgroud)

我希望间隔dashboardController.Screenshot在 2000 到 6000 之间运行,但生成随机数后,它不会改变,并Screenshot以 生成的固定间隔继续运行该函数rnd。我知道这是因为IntervalSC()运行一次,所以间隔的随机数也只生成一次。因此,我正在寻找有关如何使这项工作dashboardController.Screenshot以随机间隔运行的建议。谢谢。

Loo*_*cid 5

您可以在内部编辑计时器dashboardController.Screenshot,但我觉得添加另一个处理程序来执行此操作会更干净。例如:

private Random rnd = new Random();

void Main()
{
    double interval = rnd.Next(2000, 6000);
    var SCTimer = new System.Timers.Timer();
    SCTimer.Elapsed += new ElapsedEventHandler(dashboardController.Screenshot);
    SCTimer.Elapsed += new ElapsedEventHandler(ChangeTimerInterval);
    SCTimer.Interval = interval;
    SCTimer.Enabled = true;
}

public void ChangeTimerInterval(Object source, System.Timers.ElapsedEventArgs e)
{
    var timer = source as System.Timers.Timer;
    
    timer.Interval = rnd.Next(2000, 6000);
}
Run Code Online (Sandbox Code Playgroud)