У меня есть метод, который использует класс Timer для вызова метода и его выполнения с определенными интервалами.Таймер и методы вызова с параметром прохождения
private Timer tmr = new Timer();
public void WorkAtInterval(long interval, Action<object> work)
{
//heartbeat in miliseconds
tmr.Interval = interval;
tmr.Start();
tmr.Elapsed += new ElapsedEventHandler(work);
}
Я определил функцию, которая должна называться так:
private static void WorkSample (object interval)
{
Console.WriteLine("The interval is: {0}",interval);
}
, а затем в конечном итоге в моей главной функции:
static void Main(string[] args)
{
HeartBeat heart = new HeartBeat();
var interval = heart.HeartBeatInterval;
heart.WorkAtInterval(interval,sampleWork(interval));
Console.Read();
}
, к сожалению, это даже не компилируется. Я не так хорош с делегатами. Любая рекомендация о том, как я могу заставить это работать?
Проблема заключается в том, когда я прохожу метод работы в методе WorkAtInterval как tmr.Elapsed + = новый ElapsedEventHandler (работа), у меня есть ошибка, что там написано «имя метода, как ожидается,» – user843681
@ user843681 Это потому, что ' ElapsedEventHandler' и 'Action
@servy Я знаю, что проблема заключается в том, что когда я создаю ту же подпись, что и ElapsedEventHandler, я не могу передать параметр функции, которую я хочу выполнить больше. – user843681