我已经写过onw windows service ..因为我有一些逻辑,这些代码需要在某段时间内执行..我的服务每隔一分钟运行一次..
e.g。
If (DateTime.Now.ToString("MM/dd/yyyy hh:mm") = "7/23/2010 1:10 ") Then
'execute this logic
End If
但我面临的问题是它在考虑运行时的秒数,因此无法比较上述时间...
请求您提出其他建议。
答案 0 :(得分:3)
我假设您正在循环运行并与当前时间进行比较 - 这是一个忙碌的等待而不是推荐的运行定时工作的方式。
在您的服务中使用计时器,并将间隔设置为60000毫秒。将需要运行的代码放在tick
事件中。
请参阅this有关.NET中不同计时器类的文章。
答案 1 :(得分:3)
DateTime checkTime = new DateTime(2010, 23, 7, 1, 10, 0);
DateTime now = DateTime.Now;
if(now >= checkTime && now < checkTime.AddSeconds(60))
{ ... }
尽量避免使用ToString
这种类型的比较,您可以明确比较日期时间
答案 2 :(得分:1)
DateTime target = DateTime.Parse("7/23/2010 1:10");
if (DateTime.Now >= target) { ... }
因此,您的代码将在目标时间之后的下一个周期执行(当然,您需要确保它只运行一次,如果它是您需要的那样)。
答案 3 :(得分:0)
这会解决您的问题吗?
If (DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss") = "7/23/2010 1:10:00") Then
'execute this logic
End If
答案 4 :(得分:0)
我已经在我的服务中用C#完成了这种编码,让我给你看一下我比较时间的代码
string SetTime = Convert.ToDateTime(dtBackupData.Rows[i]["BackUpTime"].ToString()).ToString("HH:mm");
int t1 = Int32.Parse(SetTime.Replace(":", ""));
int t2 = Int32.Parse(DateTime.Now.ToString("HH:mm").Replace(":", ""));
if (Convert.ToDateTime(dtBackupData.Rows[i]["BackUpTime"].ToString()).ToString("HH:mm") == DateTime.Now.ToString("HH:mm") || t2 > t1)
{your custom code}
希望这能解决你的问题,因为它对我来说非常有用。代码对我的作用是它在特定时间备份数据库。