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

时间:2010-11-04 19:14:47

标签: c# timer

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

是否可以将匿名函数绑定到Timer的tick事件?这就是我想要做的。

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

3 个答案:

答案 0 :(得分:32)

您正在寻找Anonymous Methods

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

您也可以省略参数:

myTimer.Tick += delegate {
    MessageBox.Show("Hello world!");
};

在C#3.0中,您还可以使用Lambda Expression

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

答案 1 :(得分:6)

一个完整的例子是:

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

答案 2 :(得分:4)

您对匿名方法使用delegate关键字:

Timer myTimer = new Timer();
myTimer.Tick += delegate(object sender, EventArgs e) {
  MessageBox.Show("Hello world!");
};

在C#3.0及更高版本中,您还可以使用lambdas:

Timer myTimer = new Timer();
myTimer.Tick += (sender, e) => MessageBox.Show("Hello world!");