Я хочу иметь возможность планировать обратные вызовы, я хочу иметь возможность регистрировать множество различных обратных вызовов в разное время для объекта «Планировщик». Как то так.
public class Foo
{
public void Bar()
{
Scheduler s = new Scheduler();
s.Schedule(() => Debug.WriteLine("Hello in an hour!"), DateTime.Now.AddHours(1));
s.Schedule(() => Debug.WriteLine("Hello a week later!"), DateTime.Now.AddDays(7));
}
}
Лучший способ, которым я могу придумать для реализации Планировщика, - это запустить таймер внутри с заданным интервалом, и каждый раз, когда интервал истекает, я проверяю зарегистрированные обратные вызовы и проверяю, пора ли их вызвать, если да делать. Это довольно просто, но имеет тот недостаток, что вы получаете только «разрешение» таймера. Допустим, таймер установлен на тик один раз в секунду, и вы регистрируете обратный вызов, который будет вызываться через полсекунды, но он все равно может не вызываться целую секунду.
Есть ли лучший способ решить эту проблему?