1

メソッド monitorCallback() では、時間をテキスト ファイルに書き込みます。ファイルを書き込んだ後、ファイルの FileInfo を確認して印刷します。

次の結果が得られました。

time = 16/08/2009 14:01:46, mili = 307
time = 16/08/2009 14:01:51, mili = 291
time = 16/08/2009 14:01:56, mili = 291
time = 16/08/2009 14:02:01, mili = 291
time = 16/08/2009 14:02:06, mili = 291
time = 16/08/2009 14:02:11, mili = 291

なぜ時間が変わるのか理解できませんが、ミリ秒は固定されたままです

 private Timer monitor;
 public Window1()
            {
                InitializeComponent();
                monitor = new Timer(monitorCallback, null, 0, 5000);
            }

    private void monitorCallback(object state)
            {
                string path = @"C:\Test.txt";
                Stream stream = File.OpenWrite(path);
                StreamWriter writer = new StreamWriter(stream);
                writer.WriteLine(DateTime.Now);
                writer.Close();

                FileInfo fileInfo = new FileInfo(path);
                Dispatcher.Invoke(DispatcherPriority.Normal,
                    new Action(delegate
                   {
                         Debug.WriteLine( "time = " + fileInfo.LastWriteTimeUtc + ", mili = " +
     fileInfo.LastWriteTimeUtc.Millisecond);


                   }));

                fileInfo = null;

            }
4

1 に答える 1

2

この操作を正確に 5000 ミリ秒ごとに呼び出しています。したがって、操作が完了するまでに 1 ミリ秒もかからない場合、ファイルのタイムスタンプのミリ秒部分は変更されません。たとえば、次のようになります。

  • time1 = 2009 年 8 月 16 日 14:01:51.291
  • time2 = 16/08/2009 14:01:56.291 (= time1 + 5000 ミリ秒)

ミリ秒の部分が更新されることを確認するために、間隔を変更してみてください (たとえば、5003 ミリ秒に)。

于 2009-08-16T14:28:15.570 に答える