2

我有一个应该在给定时间内执行的方法,否则它应该抛出“超时”异常。基本上它有一个很长的运行循环。在每次循环中计算超时似乎很昂贵:

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 语句)

有人可以提出更好的方法吗?

我对 +-几毫秒没问题。

4

1 回答 1

4

只做定期检查吗?例如:

if((i % 100) == 0) { /* check for timeout */ }

或调整到1000等,10000具体取决于它需要多快注意到超时。

于 2013-03-26T12:13:44.837 回答