gpt4 book ai didi

c# - .NET 计时器不准确?

转载 作者:行者123 更新时间:2023-11-30 18:55:43 25 4
gpt4 key购买 nike

我正在开发一个应用程序,我需要从服务器获取当前日期(它不同于机器的日期)。我从服务器接收到日期,并通过简单的 Split 创建了一个新的 DateTime:

globalVars.fec = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, int.Parse(infoHour[0]), int.Parse(infoHour[1]), int.Parse(infoHour[2]));

globalVars 是一个类,fec 是一个公共(public)静态变量,因此我可以在应用程序的任何地方访问它(我知道糟糕的编码......)。现在我需要一个计时器来检查该日期是否等于我存储在列表中的一些日期,如果相等我就调用一个函数。

List<DateTime> fechas = new List<DateTime>();

在必须从服务器获取日期之前,我使用的是计算机的日期,所以为了检查日期是否匹配,我使用了这个:

private void timerDatesMatch_Tick(object sender, EventArgs e)
{
DateTime tick = DateTime.Now;
foreach (DateTime dt in fechas)
{
if (dt == tick)
{
//blahblah
}
}
}

现在我有来自服务器的日期,所以 DateTime.Now 不能在这里使用。相反,我创建了一个 Interval=1000 的新计时器,并在滴答声中将 1 秒添加到 globalVars.fec 使用:

globalVars.fec = globalVars.fec.AddSeconds(1);

但是时钟不准确,每 30 分钟时钟会损失大约 30 秒。

有没有其他方法可以做我想做的事情?我考虑过改用 threading.timer,但我需要访问其他线程和非静态函数。

最佳答案

存储服务器时间和本地时间之间的差异。使用该差异在您需要时计算服务器的时间。

关于c# - .NET 计时器不准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2841719/

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