请解释Timer事件async/await语法

Mon*_*Zhu 4 c# events asynchronous timer async-await

我在这里这里研究了asynch和await语法.理解使用情况确实很有帮助,但我在MSDN上找到了一个有趣的语法示例,我只是不明白.

:有人可以向我解释这个System.Timers.Timer事件注册的语法与asynch await:为什么你可以使用async awaitlambda表达式中已有的关键字?

Timer timer = new Timer(1000);
timer.Elapsed += async ( sender, e ) => await HandleTimer();

private Task HandleTimer()
{
    Console.WriteLine("\nHandler not implemented..." );        
}
Run Code Online (Sandbox Code Playgroud)

问题2: 什么是两个参数sendere好,如果他们不出现在HandleTimer方法?

ycs*_*sun 10

它为Elapsed事件赋予异步lambda timer.您可以通过这种方式理解异步lambda:首先,以下是lambda:

(sender, e) => HandleTimer()
Run Code Online (Sandbox Code Playgroud)

这个lambda HandleTimer同步调用.然后我们添加await以HandleTimer异步调用:

(sender, e) => await HandleTimer()
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为要异步调用某些东西,你必须自己异步,因此async关键字:

async (sender, e) => await HandleTimer()
Run Code Online (Sandbox Code Playgroud)