Класс в BCL, который будет происходить в данный DateTime? - PullRequest
0 голосов
/ 22 марта 2009

Есть ли объект, который будет происходить в данный DateTime или DateTimeOffset? Сейчас я использую таймер, чтобы выполнить эту операцию, но это требует некоторых вычислений с моей стороны, я просто думал, что что-то уже может быть на месте.

Ответы [ 4 ]

2 голосов
/ 22 марта 2009

Я не понимаю, как вы должны делать какие-либо вычисления:

public void StartTimer(DateTime target) {
  double msec = (target - DateTime.Now).TotalMilliseconds;
  if (msec <= 0 || msec > int.MaxValue) throw new ArgumentOutOfRangeException();
  timer1.Interval = (int)msec;
  timer1.Enabled = true;
}
1 голос
/ 22 марта 2009

Мне нравится:

System.Timers.Timer _WaitForScheduledTime;
_WaitForScheduledTime = new System.Timers.Timer();
_WaitForScheduledTime.Elapsed += new ElapsedEventHandler(WaitForScheduledTime_OnElapsed);
_WaitForScheduledTime.Interval = _ListOfJobs.IntervalUntilFirstJobIsToRun().TotalMilliseconds;
_WaitForScheduledTime.Start();

...

private void WaitForScheduledTime_OnElapsed(object source, EventArgs e)
{
    log.Debug("Ready to run at least one job");

    // restart the timer
    _WaitForScheduledTime.Interval = _ListOfJobs.IntervalUntilFirstJobIsToRun().TotalMilliseconds;
    _WaitForScheduledTime.Start();
}
0 голосов
/ 22 марта 2009

Не то, что я знаю. Я катал свой собственный класс, чтобы сделать это.

0 голосов
/ 22 марта 2009

Если вы используете ASP.NET, вы можете добавить пустой объект в кэш с объявленной датой ExpirationDate, а затем обработать CacheItemRemovedCallback . Просто мысль, не знаю, сработает ли это для вас.

Если вы не используете ASP.NET, вы все равно сможете использовать этот трюк с другой инфраструктурой кэширования, такой как Блок кэширования корпоративной библиотеки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...