匹配委托'System.Timers.ElapsedEventHandler'没有重载

Cur*_*ind 3 c#

我正在读这篇文章:http://www.c-sharpcorner.com/UploadFile/naresh.avari/develop-and-install-a-windows-service-in-C-Sharp/ 所以玩我遇到的Windows服务由于我缺乏知识,一个小问题.在这部分代码中:

 protected override void OnStart(string[] args)
    {
        timer1 = new Timer();
        this.timer1.Interval = 10800; 
        this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Tick);
        timer1.Enabled = true;
    }

    private void timer1_Tick()
    {
       //some code here
    }

    protected override void OnStop()
    {
        timer1.Enabled = false;
      //some code here

    }
Run Code Online (Sandbox Code Playgroud)

this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Tick); 给:

错误1'timer1_Tick'没有重载匹配委托'System.Timers.ElapsedEventHandler'

我想知道为什么很多人对这个例子没有问题?

Cod*_*ist 6

事件不再是多播委托.并且您的方法签名与委托签名不匹配,在您的情况下是ElapsedEventHandler委托.

你必须改变你的代码:

 protected override void OnStart(string[] args)
{
    timer1 = new Timer();
    this.timer1.Interval = 10800; 
    this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Tick);
    timer1.Enabled = true;
}

private void timer1_Tick(object sender, ElapsedEventArgs elapsedEventArg)
{
   //some code here
}

protected override void OnStop()
{
    timer1.Enabled = false;
  //some code here

}
Run Code Online (Sandbox Code Playgroud)

你也可以代替:

this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Tick);
Run Code Online (Sandbox Code Playgroud)

做这个:

timer.Elapsed += this.timer1_Tick;
Run Code Online (Sandbox Code Playgroud)