List<System.Timers.Timer> myTimers = new List<System.Timers.Timer>();
private void startFunction()
{
for (var parameter = 0; parameter < list.Count; parameter++)
{
System.Timers.Timer timer = new System.Timers.Timer(TimeSpan.FromMinutes(10).TotalMilliseconds);
timer.Elapsed += new ElapsedEventHandler(someFunction);
timer.Start();
myTimers.Add(timer);
}
}
// without the int parameter this code works
public void someFunction(object sender, ElapsedEventArgs e, int parameter)
{
// some code that have to run over time
}
因此,在someFunction方法中,我使用了一个参数(int(,如果没有它,这一切都很好。我只想通过这个函数发送一个参数,通过在线搜索和尝试不同的方法,它仍然不起作用。
有人知道如何使用函数someFunction每10分钟发送一个参数吗?
由于parameter
只是一个局部变量,因此可以创建一个lambda来捕获此变量,并将其传递给someFunction
方法。
private void startFunction()
{
for (var parameter = 0; parameter < list.Count; parameter++)
{
var timer = new System.Timers.Timer(TimeSpan.FromMinutes((10)).TotalMilliseconds);
int parameterCopy = parameter;
timer.Elapsed += (o, e) => someFunction(o, e, parameterCopy);
timer.Start();
myTimers.Add(timer);
}
}
由于此问题,parameterCopy
是必需的。