从EventHandler调用函数时委派问题

时间:2011-09-23 13:39:09

标签: c# .net

我正在尝试在C#中使用此TCM更新程序的计时器类,并且我不断收到错误:“委托给实例方法不能为'此'。”

我以为我只需要在函数的开头添加“this”,但仍然会出现错误。知道我可能需要做什么吗?

这是我正在使用的代码(函数调用错误5行):

public Form1()
{
  InitializeComponent();
  updateTimer = new System.Timers.Timer(10000);
  updateTimer.Elapsed += new ElapsedEventHandler(this.onUpdateEvent);   <--- Error here
  updateTimer.Interval = 2000;
  updateTimer.Enabled = true;
}

private void OnUpdateEvent(object source, ElapsedEventArgs e)
{
    Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
}

4 个答案:

答案 0 :(得分:1)

除了错字:为什么不写

updateTimer.Elapsed += OnUpdateEvent;

答案 1 :(得分:1)

更改此内容:updateTimer.Elapsed += new ElapsedEventHandler(this.onUpdateEvent);

对此:updateTimer.Elapsed += new ElapsedEventHandler(OnUpdateEvent);

或简化语法(正如其他人所建议的那样):updateTimer.Elapsed += OnUpdateEvent;

答案 2 :(得分:0)

试试这个,如果这适合你!

public Form1()
    {
        InitializeComponent();
        System.Windows.Forms.Timer timer = newSystem.Windows.Forms.Timer();
        timer.Interval = 2000;
        timer.Tick += new EventHandler(Timer_Tick);
        timer.Start();
    }

    void Timer_Tick(object sender, EventArgs e)
    {
        //
    }

答案 3 :(得分:0)

一个非常简单的解决方案是使OnUpdateEvent方法成为静态,如果您不需要任何实例成员。