我可以将一个匿名函数绑定到Timer的tick事件吗?

Pie*_*ter 13 c# timer

如果Tick-handling函数只在一个上下文中使用(即总是在同一个函数中与同一个Timer对象结合使用),为什么还要将它作为一个单独的函数呢?当我想到这一点时,这就是我脑子里的想法.

是否可以将匿名函数与Timer的tick事件联系起来?这就是我想要做的.

Timer myTimer = new Timer();
myTimer.Tick += new EventHandler(function(object sender, EventArgs e) {
  MessageBox.Show("Hello world!");
});
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 35

您正在寻找匿名方法:

myTimer.Tick += delegate (object sender, EventArgs e) {
    MessageBox.Show("Hello world!");
};
Run Code Online (Sandbox Code Playgroud)

您也可以省略参数:

myTimer.Tick += delegate {
    MessageBox.Show("Hello world!");
};
Run Code Online (Sandbox Code Playgroud)

在C#3.0中,您还可以使用Lambda表达式:

myTimer.Tick += (sender, e) => {
    MessageBox.Show("Hello world!");
};
Run Code Online (Sandbox Code Playgroud)


Hus*_*slu 7

一个完整的例子是:

    Timer timer = new Timer();
    timer.Interval = 500;
    timer.Tick += (t, args) =>
        {
            timer.Enabled = false;
            /* some code */
        };
    timer.Enabled = true;
Run Code Online (Sandbox Code Playgroud)