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以随机间隔运行的建议。谢谢。
您可以在内部编辑计时器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)