我有一個應該在給定時間內執行的方法,否則應該拋出'超時'異常。基本上它有一個長時間的運行循環。在循環的每次傳球計算超時似乎昂貴:在長時間運行的循環中處理超時
private void DoSomethingGood(int timeoutSeconds)
{
var startTime=DateTime.Now;
int count=100000000; //some big number
for(int i=0;i<count;i++)
{
//code to to take care of timeout.
var ellapsedSeconds =(DateTime.Now-startTime).TotalSeconds;
if(ellapsedSeconds>=timeoutSeconds)
{
throw new TimeoutException("Timeout");
}
/*some more code here*/
}
}
(調用上面沒有其他代碼,本身正在超過2秒,很大程度上是由於DateTime.Now聲明方法)
有人能提出一個更好這樣做的方法?
我很好+ -few-milliseconds。
[.net構造for while循環超時]的重複可能性(http://stackoverflow.com/questions/6629219/net-construct-for-while-loop-with-timeout) – jbabey 2013-03-26 12:14:36
爲什麼不使用build-in 'System.Timers.Timer'? – 2013-03-26 12:15:58
您的DateTime.Now不需要2秒鐘。如果是這樣,你應該檢查你的電腦。 – Peter 2013-03-26 12:16:07