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*/

    }
}

(他のコードなしで上記のメソッドを呼び出すと、主にDateTime.Nowステートメントが原因で、それ自体が2秒以上かかります)

誰かがそれを行うためのより良い方法を提案できますか?

+-数ミリ秒で大丈夫です。

4

1 に答える 1

4

定期的にチェックするだけですか?例えば:

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

または、タイムアウトに気付く必要がある速度に応じて1000、などに調整します。10000

于 2013-03-26T12:13:44.837 に答える