在多线程应用程序中获取唯一的文件名

Sté*_*ane 0 c# multithreading file unique

我需要在多线程应用程序中构建一个唯一的文件名,该文件序列化磁盘上的一些数据.我可以使用什么方法来确保唯一的名称.该应用程序之前没有多线程,并且正在使用Ticks.当使用多个线程时,它失败的速度比我预期的要快得多.我现在将CurrentThreadId添加到文件名中,应该这样做

string.Format("file_{0}_{1}.xml", DateTime.Now.Ticks, Thread.CurrentThread.ManagedThreadId)
Run Code Online (Sandbox Code Playgroud)

这样做有什么"聪明"的方法吗?

Nei*_*oss 9

那么Guid.NewGuid()而不是线程ID呢?

string.Format("file_{0}_{1:N}.xml", DateTime.Now.Ticks, Guid.NewGuid()) 
Run Code Online (Sandbox Code Playgroud)

通过将标记保持为名称的一部分,如果排序很重要,名称仍将是近似日期顺序.

{1:N }摆脱了guid中的花括号和破折号.

另外,请考虑使用DateTime.UtcNow.Ticks,以便在夏令时开始时保证增量滴答.