2010-07-23 58 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} 

的希望,因爲它已經爲我工作不錯這能解決你的問題的代碼。代碼爲我做的是在特定時間需要備份數據庫。