0

我有一个 Windows 服务,我想插入一个计时器。如何检查当前时间是否为9:00 AM?我希望我的服务人员每天都检查一下。十分感谢

我的尝试:

Datetime dt=Datetime.parse("09:00:00 everyday");
if(datetime.now -dt ==0)
{
   //fire event
}

不过这对我来说有点傻。

4

4 回答 4

0

您需要制作一个计时器并将其间隔设置为从现在到明天上午 9:00 之间的时间跨度。下次计时器滴答时,以相同方式再次设置间隔。您应该使用这个 Timer 类:http: //msdn.microsoft.com/en-us/library/system.timers.timer.aspx

于 2012-07-08T07:55:09.193 回答
0

请使用 DateTime.UtcNow.Hour 检查当前时间

通过使用 UtcNow,您将获得一个 DateTime 对象,该对象设置为计算机上的当前日期和时间,表示为协调世界时 (UTC)。

于 2012-07-08T07:56:44.230 回答
0
var now = DateTime.Now;
var today = now.Date;
var nineAm = today.AddHours(9);

TimeSpan ts = nineAm - now;

var timeInMillisecondsTill9Am = ts.Milliseconds;

If(timeInMillisecondsTill9Am==0)
{
 //your code goes here
}
于 2012-07-08T07:58:55.067 回答
0

由于您不知道何时有人可能会关闭或重新启动您的计算机或服务,因此您需要确保使用一种足够强大的方法来处理这些类型的中断。

我建议您的服务每 5 分钟左右检查一次,如果时间在上午9 点之后并且最后运行日期是昨天。如果是这样,您将上次运行日期更新为当天(可能在一个简单的文本文件中),然后运行“9:00am”任务。通过这种方式,您的任务每天只运行一次,非常接近上午 9 点,并且对重新启动非常有效。

您需要使用标准的 .NET 计时器来触发检查 - 如果您足够聪明,您可以让它在上午 9 点后触发几秒钟。

让我知道这是否是一个好的解决方案。

于 2012-07-08T08:09:27.810 回答