1

Now.ToFileTime().NETの関数を使用して、ファイル名のタイムスタンプを取得するプログラムがあります。このコードが1つのスレッドでのみ呼び出されることを確認したので、同時実行性について心配する必要はありません。

私のメソッドには次のテストコードがあります。

Dim Time As String = Now.ToFileTime()
IO.File.AppendAllText("D:\test.txt", Time & " - " & System.Threading.Thread.CurrentThread.ManagedThreadId().ToString() & vbCrLf)

これにより、test.txtに次のように出力されます。

129899740120622239 - 4
129899740140465735 - 4
129899740140465735 - 4
129899740140465735 - 4
129899740140465735 - 4
129899740160465479 - 4
129899740160465479 - 4
129899740160621727 - 4
129899740160621727 - 4

したがって、タイムスタンプが2回以上繰り返されていることがわかります。たまにユニークなものを手に入れますが、それほど頻繁ではありません。このメソッドを呼び出すたびに、一意の時間を取得するべきではありません。すべてが少なくとも数ミル離れています。私はそれを順番に呼び出すだけではありません(しかし、それでも私は異なる時間を取得することを期待します)。

4

2 に答える 2

1

グローバル変数を設定し、使用する前に変更されていることを確認してください。

于 2012-08-21T06:11:19.857 に答える
0

みんな、ありがとう、

ティムが指摘したシステム時間の解像度を考えると、一意性を確保するために、インデックスとしてプライベート静的変数を入れました。

于 2012-08-21T15:24:47.743 に答える