2011-11-11 39 views
1

我正確地認爲這個邏輯(在評論中解釋過)是不正確的嗎?TimeSpan.Compare comparison

// While the current time is before the finish time, sleep the current thread. 
// The timer will continue to run the getting of the rates 
while (TimeSpan.Compare(DateTime.Now.TimeOfDay,this._finishTime.TimeOfDay) == -1) 

在我看來,看MSDN文檔,以便TimeSpan.Compare,我應該尋找,當正確的參數爲1,或0來實現這一功能之後,但是這個代碼已經在那裏好幾年。

+6

我想知道如果這項工作發現自己在午夜左右運行會發生什麼。 – AakashM

+0

@AakashM:哈,好吧,如果完成時間是午夜,它不可能是-1,所以它總是顯示爲完成,因爲它只是一個TimeSpan。 –

回答

6

這在功能上等同於:

while(now < finishTime); 

看起來這將正常工作。每當它達到0時,當前時間等於finishTime,每當它達到1時,當前時間大於finishTime。無論哪種情況,循環都會結束。

一個更好的辦法是:

while(DateTime.Now < this._finishTime) 

這並不關心TimeOfDay,創建每天都去的問題(如@AakashM在評論中指出)。

2

嗯,它實際上是等待現在時間是<完成時間。

所以,是的,它會退出時,它的0或1,但是-1它會循環的循環。

相關問題