この単純なコンソール コードを書きましたが、結果を説明できません。
public static void Execute2()
{
Stopwatch sw = new Stopwatch();
sw.Start();
while (sw.ElapsedMilliseconds < 1000)
{
Console.WriteLine(sw.ElapsedMilliseconds);
System.Threading.Thread.Sleep(100);
}
}
コンソールの出力:
0
127
228
328
429
530
630
731
831
931
Press a key to continue... (no debug)
ご覧のとおり、最初の呼び出しの後に約 27 ミリ秒のオフセットがありますが、次の呼び出しではこのオフセットは変更されていません。
Thread.Sleep() を呼び出すオーバーヘッドによって 27 ミリ秒かかると思いましたが、それは最初の 1 回だけです。この動作はビルドごとに繰り返されます (デバッグなしでビルドを実行します)
私のマシンは次のとおりです:コア2デュオ@ 2.8Ghz、2GB RAM、Windows XP SP3、VS2010 pro
問題は、27ms の原因は何なのかということです。