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 分鐘發送一個引數?
uj5u.com熱心網友回復:
由于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是必需的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/452591.html
上一篇:使用列中的最后一個值而不是SUM
