从另一种方法调用方法

时间:2015-05-30 14:47:26

标签: c# methods

我有这段代码:

        public void StartTimer()
        {
            var timer = new DispatcherTimer();
            timer.Tick += Something;
            timer.Interval = new TimeSpan(0, 0, 0, 3);
            timer.Start();

        }

        private async void Something()
        {      
         //code goes here....
        }

问题是我收到了这个错误:

  

'Something'没有超载匹配委托   'System.EventHandler'

我的问题可能是基本的:为什么我会收到此错误,如何修复...

4 个答案:

答案 0 :(得分:3)

属性Tick的类型为EventHandler

EventHandler的签名是:

public delegate void EventHandler(
    Object sender,
    EventArgs e
)

这意味着您的Something方法必须与此签名匹配。将其更改为:

public void Something(Object sender, EventArgs e) { ... }

或者,如果您无法更改该方法的签名,则可以创建一个调用方法的新委托。

timer.Tick += (s, e) => Something();

答案 1 :(得分:1)

DispatcherTimer.Tick事件需要一个带有objectEventArgs参数的处理程序:

private void Something(object o, EventArgs e)
{
    // implementation
}

答案 2 :(得分:0)

Something的签名与该特定事件不匹配。查看该事件的文档,了解它是如何完成的。

答案 3 :(得分:0)

试试这个

        public void StartTimer()
        {
            var timer = new DispatcherTimer();
            timer.Tick += Something;
            timer.Interval = new TimeSpan(0, 0, 0, 3);
            timer.Start();

        }

        private async void Something(Object sender, EventArgs e)
        {      
         //code goes here....
        }
相关问题