假设我有以下代码:
var secondsElapsed = 0;
Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler( iterateSecondsElapsed);
myTimer.Interval = 1000;
myTimer.Start();
//Somewhere else in the code:
public static void iterateSecondsElapsed( object source, ElapsedEventArgs e )
{
secondsElapsed++;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在不定义DisplayTimEvent静态方法的情况下执行此操作?就像是:
myTimer.Elapsed += new ElapsedEventHandler( secondsElapsed => secondsElapsed ++);
Run Code Online (Sandbox Code Playgroud)
我意识到我在这里表现出对lambdas的深刻理解,但是......
Jon*_*eet 15
当然,只是:
myTimer.Elapsed += (sender, args) => secondsElapsed++;
Run Code Online (Sandbox Code Playgroud)
lambda表达式的参数必须与您尝试将其转换为的委托的参数相匹配.
根据Timer您使用的是否始终在同一个线程上触发,您可能需要使用:
myTimer.Elapsed += (sender, args) => Interlocked.Increment(ref secondsElapsed);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3262 次 |
| 最近记录: |