Мне нужно создать каталоги в папке из многопоточного приложения. Каталог должен быть уникальным для каждой сессии.Убедитесь, что создан новый каталог
Теперь с созданием файла вы можете использовать следующее, чтобы убедиться, что текущий поток создал файл.
New FileStream(FilePath, FileMode.CreateNew)
FileMode.CreateNew
дает исключение, если файл уже существует.
Я могу сделать следующее. Но если 2 потока попытаются создать тот же каталог в одно и то же время. Теперь они получат одинаковый путь. Поскольку Directory.CreateDirectory
не генерирует исключения, если каталог уже существует.
If Not Directory.Exists(DirPath) Then
Directory.CreateDirectory(DirPath)
End If
Есть ли у .NET4 решение для этого?
Как вы генерировать «FilePath»? – lenkan
Это будет: RootDir + UserName + Timestamp. Он должен быть уникальным. Но я хочу получить отказ, если он не будет уникальным. – Stinus
Если вам просто нужно проверить, что между потоками одного процесса вы можете выполнить операцию с помощью ['lock'] (https://msdn.microsoft.com/it-it/library/c5kehkcz.aspx)/[' SyncLock' ] (https://msdn.microsoft.com/it-it/library/3a86s51t.aspx) –