我研究了异步和等待语法 here和 here .它确实有助于理解用法,但我在 MSDN 上找到了一个有趣的语法示例我只是不明白。
问题:
有人可以向我解释一下使用异步等待注册此 System.Timers.Timer
事件的语法吗:
为什么可以使用 lambda 表达式中已有的 async
await
关键字?
Timer timer = new Timer(1000);
timer.Elapsed += async ( sender, e ) => await HandleTimer();
private Task HandleTimer()
{
Console.WriteLine("\nHandler not implemented..." );
}
问题 2:
如果 HandleTimer
方法中没有出现这两个参数 sender
和 e
有什么用?
最佳答案
它将异步 lambda 分配给 timer
的 Elapsed
事件。你可以这样理解异步lambda:首先,下面是一个lambda:
(sender, e) => HandleTimer()
此 lambda 同步调用 HandleTimer
。然后我们添加一个 await 来异步调用 HandleTimer
:
(sender, e) => await HandleTimer()
但这行不通,因为要异步调用某些东西,您自己必须是异步的,因此 async
关键字:
async (sender, e) => await HandleTimer()
关于c# - 请解释定时器事件异步/等待语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37679480/