Feed
Google+
Contact
XING
LinkedIn
Twitter
ICQ
meebo.com

DateTime.Now.Ticks Problemchen

by Roland Schumacher alias GENiALi 15. September 2005 -- 102 words  -- 32 mal gelesen

Vor kurzem musste ich mit File.Move() Dateien verschieben.
Die Dateien stammten aus verschiedenen Verzeichnissen. Damit
Dateien, die gleich heissen, nicht überschrieben werden, wollte
ich mit DateTime.Now.Ticks.ToString() noch eine "eindeutige" Nummer
vor den Dateinamen stellen.

string file = Path.GetFileName(datei);
File.Move(datei, geuselFolder +@"\"+ DateTime.Now.Ticks.ToString() +"_"+ file);

Ab und zu blieb mir die Methode aber hängen. Als ich es wie folgt versuchte
klappte es.

Thread.Sleep(10);
string file = Path.GetFileName(datei);
File.Move(datei, geuselFolder +@"\"+ DateTime.Now.Ticks.ToString() +"_"+ file);

Thread.Sleep musste einfach mindestens 10ms sein. So funktionierte es.
Mir war aber nicht klar wie so.

Nach dem ich in einem Forum nachgefragt hatte, war alles klar.
DateTime.Now.Ticks wird nur alle 10ms aktualisiert. Daher funktioniert
es wenn der Wert von Thread.Sleep mindestens 10ms ist.

 

Tags:

Entwicklung

Kommentare (4) -

Frank
Frank
02.01.2007 16:36:59 #

Wer wertvolle Zeit nicht aussitzen will, sollte einfach eine GUID im Namen verwenden.
Folgendes Codefragment erzeugt eine GUID und ersetzt den Bindestrich durch einen Unterstrich:


System.Guid.NewGuid().ToString().Replace("-", "_")

Antwort

GENiALi
GENiALi
03.01.2007 16:34:47 #

Jap. Da muss ich dir Recht geben.
Heute würde ich es auch so machen.
Hat sich seid dem Posting hier sehr gut
bewährt, dass GUID. Smile

Antwort

Pocket
Pocket
27.03.2008 11:31:21 #

Hi,

Du hast gesagt, dass Du das in einem Forum gefudnen hast. Kannst Du mir die Quelle nennen? Ich brauche nämlich diese Info als Beweis in meine aktuellen arbeit. Aus genau diesem Grund ist nämlich ein microBenchmarking mit .NET nicht möglich.
Oder kennt jemand eine genauere Möglichkeit? (<10ms)

In Java gibt es ziemlich genaue nanos, deshalb wundert mich es das .NET das nicht kann..

Gruss Pocket

Antwort

GENiALi
GENiALi
27.03.2008 18:48:28 #

Hier

www.tech-archive.net/.../msg00371.html

In .NET, ab Version 2.0 sollte es einen besser auflösenden
Counter geben. Schau dir mal die Stopwatch-Klasse an.
Wenn ich mich nicht irre ist die dafür gedacht.

Antwort

Kommentar schreiben

  Country flag

biuquote
  • Kommentar
  • Live Vorschau
Loading

Statistik

Gesamte Posts: 1025
Dieses Jahr: 7
Diesen Monat: 1
Diese Woche: 0
Kommentare: 929
Total Bewertungen: 91
Ø Bewertung: 4,42
Meisten Kommentare
Google+ ... (28)
Beste Ø Bewertung
Tastaturlayout von Visual Stud ... (5)
Meiste Bewertungen
Windows 7 und die ersten Erfah ... (5)

Buttons

Stop Spam Harvesters, Join Project Honey Pot Benutzerprofil von GENiALi connection speed test network connection Bloggeramt.de Slug.ch Blog Verzeichnis und Blog Webkatalog Schumacher Roland Seitwert Valid XHTML 1.0 Transitional

writing