1

我需要在多线程应用程序的文件夹中创建目录。每个会话的目录必须是唯一的。

现在通过文件创建,您可以使用以下内容,以确保当前线程创建了文件。

New FileStream(FilePath, FileMode.CreateNew)

如果文件已经存在,FileMode.CreateNew则给出异常。

我可以做到以下几点。但是如果 2 个线程试图同时创建同一个目录。他们现在将收到相同的路径。因为Directory.CreateDirectory如果目录已经存在则不会抛出异常。

    If Not Directory.Exists(DirPath) Then
        Directory.CreateDirectory(DirPath)
    End If

.NET4 对此有解决方案吗?

4

1 回答 1

2

您可以使用全局计数器作为目录路径的一部分:

private static long counter = 0L;

var n = Interlocked.Increment(ref counter);
var path = 
    Path.Combine(
        root,
        Environment.MachineName, 
        n.ToString(CultureInfo.InvariantCulture), 
        "whatever", "else");
于 2016-07-13T10:06:36.873 回答