EventHandler中的C#数据

EventHandler中的C#数据,c#,winforms,C#,Winforms,我有两个功能。一个创建计时器,另一个在计时器过期时执行操作。计时器函数接受1个附加参数(int)。我需要把它付诸行动。下面是代码,用于解释: public void CreateTimer(int t) { System.Timers.Timer Timer=新的System.Timers.Timer(); timer.appeased+=新的ElapsedEventHandler(DoAction(timer,?,t)); 定时器间隔=4000; timer.Enabled=true; }

我有两个功能。一个创建计时器,另一个在计时器过期时执行操作。计时器函数接受1个附加参数(int)。我需要把它付诸行动。下面是代码,用于解释:

public void CreateTimer(int t)
{
System.Timers.Timer Timer=新的System.Timers.Timer();
timer.appeased+=新的ElapsedEventHandler(DoAction(timer,?,t));
定时器间隔=4000;
timer.Enabled=true;
}
正如您所看到的,在
EventHandler
中有
,我不知道该放什么进去。下面是
操作

public void DoAction(对象发送方、ElapsedEventArgs e、int l)
{
//这里有些东西
}

如何发送
int l

您可以向引用局部变量的事件订阅lambda表达式

timer.Elapsed += (s, e) => { DoAction(s, e, t); };

谢谢你的帮助,马腾!对于可读性,您可以在这里进行进一步的小优化,即从lambda表达式中删除大括号;如果块中只有一条语句,则不需要它们。谢谢,Michd!现在它看起来好多了,代码也不那么复杂了。@Maarten让你的大脑处理的字符更少了,但这并没有增加代码的意义<代码>timer.appeased+=(s,e)=>DoActions(s,e,t)更容易阅读。