@ JonathanWright предполагает, что CreateDirectory не будет работать, когда папка уже есть. Если я читаю Directory.CreateDirectory, он говорит: «Этот объект возвращается независимо от того, существует ли каталог по указанному пути». Это означает, что вы не обнаруживаете папку, созданную между проверкой, существует и фактически создает.
Мне нравится CreateDirectoryTransacted (), предложенный @DanielTrebbien, но эта функция устарела.
Единственное оставшееся решение, которое я вижу, это использовать c api и вызывать там ' CreateDirectory ', так как это приводит к ошибке, если папка существует, если вам действительно нужно быть уверенным, что она охватывает всю расу состояние.
Это приведет к чему-то вроде этого:
Private Function GetTempFolder() As String
Dim folder As String
Dim succes as Boolean = false
Do While not succes
folder = Path.Combine(Path.GetTempPath, Path.GetRandomFileName)
success = c_api_create_directory(folder)
Loop
Return folder
End Function