[英]How do I use a timer and or a do while loop to make labels show up for a certain amount of time
[英]How do I make use of a parameter in a ElapsedEventHandler (Timer)?
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)并且没有它,这很好。 我只想通过这个 function 发送一个参数,通过在线搜索和尝试不同的方法它仍然不起作用。
有人知道如何每 10 分钟使用 function someFunction发送参数吗?
由于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
是必需的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.