簡體   English   中英

從另一個方法調用一個方法

[英]Call a method from another method

我有以下代碼:

        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'

我的問題可能是基本的:為什么會出現此錯誤以及如何解決此問題...

Tick屬性的類型為EventHandler

EventHandler的簽名是:

public delegate void EventHandler(
    Object sender,
    EventArgs e
)

這意味着您的Something方法必須與此簽名匹配。 更改為:

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

另外,如果您不能更改該方法的簽名,則可以創建一個新的委托來調用您的方法。

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

DispatcherTimer.Tick事件需要一個帶有objectEventArgs參數的處理程序:

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

Something的簽名與該特定事件不匹配。 查看該事件的文檔以了解如何完成。

嘗試這個

        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....
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM