我有一个应该在给定时间内执行的方法,否则它应该抛出“超时”异常。基本上它有一个很长的运行循环。在每次循环中计算超时似乎很昂贵:
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 语句)
有人可以提出更好的方法吗?
我对 +-几毫秒没问题。