Как выполнять код в определенное время каждый день?

Я пытаюсь добавить в свою программу функцию, которая будет выполнять код каждый день после закрытия фьючерсных рынков в Чикаго. Это означает, что я хочу запускать код около 5:35 по восточному времени (4:35 по центральному времени, где расположены рынки). Это, конечно, будет переключаться между EST (UTC-5) и EST (UTC-4), когда наступает летнее время.

Я знаю, что есть много похожих вопросов, однако ни один из них не предлагает решения, которое я могу использовать. Похоже, что первичные предложения заключаются в использовании планировщика заданий или кварца, однако я не могу реализовать их в своей программе. Я думаю, что наиболее многообещающим решением было бы использование комбинацииTimeZoneInfoDateTime, а такжеTimeSpan планировать таймер каждый день, который будет срабатывать в нужное время. В настоящее время у меня есть решение:

    DateTime now = DateTime.Now;
    DateTime currentDateTime = now.DateTime.Date;
    DateTime expiryDateTime = currentDateTime
        .AddHours(17)
        .AddMinutes(35)
        .AddDays(
            now.DateTime.Hour >= 18 + utcOffset 
            || (now.DateTime.Hour == 17 && now.DateTime.Minute >= 35) ? 1 : 0);
    Timer timer = new Timer(
         ...,
         null,
         expiryDateTime - DateTime.Now,
         ...);

Однако я думаю, что это не справится, если мой код будет запущен в часовом поясе, отличном от восточного времени. Я'Я также обеспокоен тем, что это не будет вести себя должным образом в течение 23 или 25 часовых дней, которые происходят, когда часовой пояс переключается с EST на EDT и наоборот.

Есть ли лучший способ, чем то, что я сейчас делаю, для управления расписанием? Как я могу сделать этот код более устойчивым к обработке в любом часовом поясе, но всегда выполнять в одно и то же время по восточному времени?

РЕДАКТИРОВАТЬ: Как уже упоминалось выше,Планировщик заданий и Кварц не являются опциями, Кварц отсутствует, потому что я не могу включить сторонние библиотеки. Планировщик заданий отсутствует, потому что мне нужен доступ ко многим внутренним значениям из моей программы. Запуск другого приложения и предоставление этих значений этому приложению значительно усложняет ситуацию, чем я думаю.

Ответы на вопрос(6)

Ваш ответ на вопрос