gpt4 book ai didi

使用 Lambda 而不是方法引用的 C# 计时器?

转载 作者:太空狗 更新时间:2023-10-29 20:49:09 26 4
gpt4 key购买 nike

假设我有以下代码:

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++;
}

有没有办法在不定义 DisplayTimEvent 静态方法的情况下做到这一点?像这样的东西:

myTimer.Elapsed += new ElapsedEventHandler( secondsElapsed => secondsElapsed ++);

我意识到我在这里表现出对 lambda 的严重缺乏理解,但尽管如此......

最佳答案

当然,只是:

myTimer.Elapsed += (sender, args) => secondsElapsed++;

基本上,lambda 表达式的参数必须与您尝试将其转换成的委托(delegate)的参数相匹配。

根据您使用的 Timer 是否总是在同一线程上触发,您可能需要使用:

myTimer.Elapsed += (sender, args) => Interlocked.Increment(ref secondsElapsed);

关于使用 Lambda 而不是方法引用的 C# 计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35342307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com