我已經寫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