У меня есть список объектов с филдом, в котором хранится DateTime. Как сделать так, что бы при наступлении установленной даты и время в этом филде, исполнялся метод?
Asked
Active
Viewed 117 times
0
-
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 Answers
-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.
Но это все ерундистика и так делать не нужно. Используй планировщик.
-
-
Стараемся))) Взял инфу с киберфорума https://www.cyberforum.ru/csharp-beginners/thread2273667.html – Server Kerimov Feb 17 '22 at 14:18