0

У меня есть список объектов с филдом, в котором хранится DateTime. Как сделать так, что бы при наступлении установленной даты и время в этом филде, исполнялся метод?

  • 1
    Если время небольшое, то можно при создании каждого объекта запускать таймер, который выполнит действие (пример с удалением). Если объектов много и точность не особо важна, то можно сделать один таймер/цикл, который раз в N сек/мин будет проверять объекты и запускать действие, если у тех истекло время. Ну а если время очень большое, нужна точность, то тут явно нужны сторонние компоненты, для c# есть два популярных: Quartz.NET и Hangfire. – EvgeniyZ Feb 17 '22 at 01:20
  • может поможет, в дополнение к пред-му комменту: https://docs.microsoft.com/ru-ru/dotnet/api/system.timers.timer.elapsed?view=net-6.0 – 1001001 Feb 17 '22 at 05:19
  • @EvgeniyZ, Спасибо большое. Реализовал для каждого объекта свой таймер. Все работает! – Максим Feb 17 '22 at 18:53

1 Answers1

-1

ВНИМАНИЕ!!! КАК ДЕЛАТЬ НЕ НАДО!!!

UInt64 wait = 1; // кол-во времени в ед.
        while (true)
        {
            while (true)
            {
                if (wait <= Int32.MaxValue)
                {
                    Thread.Sleep((Int32)wait);
                    break;
                }
                else
                {
                    wait -= Int32.MaxValue;
                    Thread.Sleep(Int32.MaxValue);
                }
            }
            DoSomeWork();
        }

Это таймер после запуска программы. Для твоего решения внутрь просто засунь проверку на нужную дату в if.

Но это все ерундистика и так делать не нужно. Используй планировщик.