5

重複の可能性:
C#DateTime.Now精度

.NETの高解像度タイミングに関するSOに関するいくつかの質問があり、DateTime.Ticksの結果は100ナノ秒であると(MSDNドキュメントのように)述べられています。

しかし、これは実際にはまったく当てはまらないようです。以下のコードを実行すると、Tick値が行ごとに異なり、多くの行が同じMilisecond値である行が生成されると予想されます。しかし、そうではありません。ティック値は、ミリ秒値の次のシフトまで同じままであり、タイムスタンプの解像度に何も追加されません。

private static List<string> GetTimeLine(long iterations)
{
    List<string> liste = new List<string>();
    for (long i = 0; i <= iterations; i++)
    {
        liste.Add(DateTime.Now.Millisecond.ToString() + " - " + DateTime.Now.Ticks.ToString());
    }

    return liste;
}

static void Main(string[] args)
{
    Console.WriteLine("Generating timeline");
    guids = GetTimeLine(10000);
    File.WriteAllLines(@"C:\Test\GUIDS.TXT", guids);
    Console.WriteLine("File written - Press ENTER");
    Console.ReadLine();
}

結果出力の例:

...
867-634940160118679615

867-634940160118679615

867-634940160118679615

867-634940160118679615

867-634940160118679615

868-634940160118689616

868-634940160118689616

868-634940160118689616

..。

では、.NETでミリ秒を超える解像度を取得する方法は何ですか?

4

1 に答える 1

5

C# で経過時間を測定する最も正確な方法は、Stopwatchクラスを使用することです。

これは、 QueryPerformanceCounterへの呼び出しで実装されたマイクロプロセッサのパフォーマンス カウンターを使用します。

于 2013-01-17T10:22:10.417 に答える