2010-07-23 52 views
1

我已经写ONW窗口service..in,我有逻辑是代码的某些部分需要在一定的时间..我的服务是在每一个分运行执行..Windows服务

例如

If (DateTime.Now.ToString("MM/dd/yyyy hh:mm") = "7/23/2010 1:10 ") Then 

    'execute this logic 

End If 

但亚姆面对概率正在考虑秒,而运行,所以无法比较上述时间...

要求你提出了一些其他的方式..

+1

您有一个错字:第二个字符串中有一个空格。这永远不会比较真实。否则,你的逻辑似乎是正确的。 – 2010-07-23 07:55:46

回答

3

我假设你正在运行在一个循环中,并与当前时间进行比较 - 这是一个繁忙的等待,而不是推荐的定时工作方式。

在您的服务中使用计时器,并将间隔设置为60000毫秒。把需要在tick事件中运行的代码。

请参阅this有关.NET中不同计时器类的文章。

+0

同样的事情,我did..but仍面临上述问题.. – 2010-07-23 07:53:24

+0

@ amitpatil200 - 你有一个额外的空间,你比较字符串。那是故意的吗?你也没有使用比较运算符('=='),而是使用一个'='。在VB中你只使用一个= – Oded 2010-07-23 07:54:33

+0

。 :) – 2010-07-23 07:56:52

0

这会解决你的问题吗?

If (DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss") = "7/23/2010 1:10:00") Then 

    'execute this logic 

End If 
3
DateTime checkTime = new DateTime(2010, 23, 7, 1, 10, 0); 
DateTime now = DateTime.Now; 
if(now >= checkTime && now < checkTime.AddSeconds(60)) 
{ ... } 

尽量避免使用ToString,因为这类型作仪,你可以比较日期时间明确

1
DateTime target = DateTime.Parse("7/23/2010 1:10"); 
if (DateTime.Now >= target) { ... } 

所以,你的目标代码的时间后会执行下一个周期(当然,你需要确保它只运行一次,如果它是你需要的)。

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} 

的希望,因为它已经为我工作不错这能解决你的问题的代码。代码为我做的是在特定时间需要备份数据库。