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.