Убедитесь, что новый каталог создан
Мне нужно сделать каталоги в папке из многопоточного приложения. Каталог должен быть уникальным для каждого сеанса.
Теперь при создании файла вы можете использовать следующее, чтобы быть уверенным, что текущий поток создал файл.
New FileStream(FilePath, FileMode.CreateNew)
FileMode.CreateNew
дает исключение, если файл уже существует.
Я могу сделать следующее. Но если 2 потока пытаются создать один и тот же каталог в одно и то же время. Теперь они получат оба одинаковых пути. Так как Directory.CreateDirectory
не выдает исключение, если каталог уже существует.
If Not Directory.Exists(DirPath) Then
Directory.CreateDirectory(DirPath)
End If
.NET4 есть решение для этого?
1 ответ
Вы можете использовать глобальный счетчик как часть вашего пути к каталогу:
private static long counter = 0L;
var n = Interlocked.Increment(ref counter);
var path =
Path.Combine(
root,
Environment.MachineName,
n.ToString(CultureInfo.InvariantCulture),
"whatever", "else");