Como executar código em um determinado momento todos os dias?

Eu estou tentando adicionar um recurso ao meu programa que executará código todos os dias após o fechamento dos mercados futuros em Chicago. Isso significa que eu quero executar o código por volta das 5:35, Hora do Leste (4:35, Hora Central, onde os mercados estão localizados). Isso, é claro, será alternado entre EST (UTC-5) e EST (UTC -4), conforme ocorre o horário de verão.

Eu sei que há muitas perguntas semelhantes, no entanto, nenhuma delas parece oferecer uma solução que eu possa usar. As sugestões principais parecem ser usar o Agendador de Tarefas ou o Quartz, no entanto, não posso implementá-las no meu programa. Eu acho que a solução mais promissora seria usar uma combinação deTimeZoneInfo, DateTimeeTimeSpan para agendar um cronômetro todos os dias que será acionado no momento certo. A solução que tenho atualmente é esta:

    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,
         ...);

Eu acho que isso vai desmoronar, no entanto, se meu código for executado em um fuso horário diferente do horário do leste. Também estou preocupado que isso não se comporte adequadamente nos 23 ou 25 horas que ocorrem quando o fuso horário muda de EST para EDT e vice-versa.

Existe uma maneira melhor do que o que estou fazendo atualmente para lidar com o agendamento? Como posso tornar esse código mais robusto para lidar com a execução em qualquer fuso horário, mas sempre executar ao mesmo tempo no horário do leste?

EDITAR: Como acima mencionado,O Agendador de Tarefas e o Quartz não são opções. Quartz está fora porque não consigo incluir bibliotecas de terceiros. O Agendador de Tarefas está fora porque preciso acessar muitos valores internos do meu programa. Lançar outro aplicativo e expor esses valores a esse aplicativo adiciona muito mais complexidade do que eu acho que isso merece.

questionAnswers(7)

yourAnswerToTheQuestion