指定された時間内に実行するか、「タイムアウト」例外をスローするメソッドがあります。基本的に、それは長時間実行ループを持っています。ループのすべてのパスでタイムアウトを計算するのはコストがかかるようです。
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秒以上かかります)
誰かがそれを行うためのより良い方法を提案できますか?
+-数ミリ秒で大丈夫です。