gpt4 book ai didi

c# - 如何在每天的给定时间执行代码?

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:55 26 4
gpt4 key购买 nike

我正在尝试向我的程序添加一项功能,该功能将在芝加哥 future 市场收盘后每天执行代码。这意味着我想在东部时间 5:35 左右(市场所在的中部时间 4:35)运行代码。随着夏令时的到来,这当然会在 EST (UTC -5) 和 EST (UTC -4) 之间来回切换。

我知道有很多类似的问题,但是它们似乎都没有提供我可以使用的解决方案。主要建议似乎是使用 Task Scheduler 或 Quartz,但是,我无法在我的程序中实现它们。我认为最有前途的解决方案是结合使用 TimeZoneInfoDateTimeTimeSpan 来安排每天触发的计时器在正确的时间。我目前的解决方案是:

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

我认为这会失败,但是,如果我的代码在东部时间以外的时区运行。我还担心,当时区从 EST 切换到 EDT 时,在 23 或 25 小时的日子里,这将无法正常运行,反之亦然。

有没有比我目前正在做的更好的方法来处理日程安排?我怎样才能使这段代码更健壮以处理在任何时区运行但始终在东部时间同时执行?

编辑:如上所述,Task Scheduler 和 Quartz 不是选项。 Quartz 不可用,因为我无法包含第三方库。 Task Scheduler 已出局,因为我需要从我的程序中访问很多内部值。启动另一个应用程序并将这些值公开给该应用程序增加了比我认为的优点更多的复杂性。

最佳答案

设置一个windows计划任务。长时间运行的计时器往往会出现问题,而且对于这种直接的工作来说肯定过于复杂。

关于c# - 如何在每天的给定时间执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19665525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com