我已经写ONW窗口service..in,我有逻辑是代码的某些部分需要在一定的时间..我的服务是在每一个分运行执行..Windows服务
例如
If (DateTime.Now.ToString("MM/dd/yyyy hh:mm") = "7/23/2010 1:10 ") Then
'execute this logic
End If
但亚姆面对概率正在考虑秒,而运行,所以无法比较上述时间...
要求你提出了一些其他的方式..
我已经写ONW窗口service..in,我有逻辑是代码的某些部分需要在一定的时间..我的服务是在每一个分运行执行..Windows服务
例如
If (DateTime.Now.ToString("MM/dd/yyyy hh:mm") = "7/23/2010 1:10 ") Then
'execute this logic
End If
但亚姆面对概率正在考虑秒,而运行,所以无法比较上述时间...
要求你提出了一些其他的方式..
我假设你正在运行在一个循环中,并与当前时间进行比较 - 这是一个繁忙的等待,而不是推荐的定时工作方式。
在您的服务中使用计时器,并将间隔设置为60000毫秒。把需要在tick
事件中运行的代码。
请参阅this有关.NET中不同计时器类的文章。
同样的事情,我did..but仍面临上述问题.. – 2010-07-23 07:53:24
@ amitpatil200 - 你有一个额外的空间,你比较字符串。那是故意的吗?你也没有使用比较运算符('=='),而是使用一个'='。在VB中你只使用一个= – Oded 2010-07-23 07:54:33
。 :) – 2010-07-23 07:56:52
这会解决你的问题吗?
If (DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss") = "7/23/2010 1:10:00") Then
'execute this logic
End If
DateTime checkTime = new DateTime(2010, 23, 7, 1, 10, 0);
DateTime now = DateTime.Now;
if(now >= checkTime && now < checkTime.AddSeconds(60))
{ ... }
尽量避免使用ToString
,因为这类型作仪,你可以比较日期时间明确
DateTime target = DateTime.Parse("7/23/2010 1:10");
if (DateTime.Now >= target) { ... }
所以,你的目标代码的时间后会执行下一个周期(当然,你需要确保它只运行一次,如果它是你需要的)。
我已经做过这类在我的服务在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}
的希望,因为它已经为我工作不错这能解决你的问题的代码。代码为我做的是在特定时间需要备份数据库。
您有一个错字:第二个字符串中有一个空格。这永远不会比较真实。否则,你的逻辑似乎是正确的。 – 2010-07-23 07:55:46