2016-01-24 4 views
2
using System.IO; 
Directory.Delete("someFolder",true); 
Directory.Create("someFolder"); 

Будет ли выполняться третья строка после удаления каталога или во время удаления каталога? Должен ли я перенести первую команду в «Задачу» и дождаться ее завершения?Является ли Directory.Delete()/.Create() синхронным?

+0

В следующий раз, не спрашивайте этот глупый вопрос, для чего ...? Достижение StackOverflow - Student –

+2

C# является синхронным по своей природе. Возможно, вас немного смущает новый материал об асинхронности в .NET. А также: я бы предположил, что причиной для downvotes является тот факт, что вы сформулировали свой вопрос как комментарий в примере кода. – bvgheluwe

+0

@bvgheluwe Я действительно был немного сбит с толку, я думаю, что это было потому, что в последнее время у меня были некоторые вещи, сделанные в фоновом режиме, и это было асинхронно, и мне пришлось создать задачу для конкретного кода и подождать, пока она не будет закончена. Иногда я думаю, что слишком сложно, я думаю. – Felix

ответ

8

Это старый вопрос, но стоит отметить - Directory.Delete в конечном счете вызывает функцию RemoveDirectory Windows, которые знаки Директории, как чтобы быть удалены, но файловая система не фактически удалить его, пока все дескрипторы файлов не закрыт (see docs). В результате вполне возможно вернуться с Directory.Delete и найти каталог все еще существует.

+1

Спасибо, я ценю ваш актуальный ответ :) – Felix

6

Они будут выполняться один за другим синхронно.

Delete не вернется, пока каталог не будет удален (или это исключение). Только когда Delete возвращается, может быть выполнено Create.

+0

немой вопрос снова. Означает ли это, что он ждет, пока он не будет удален? – Felix

+0

Да - я обновил, чтобы включить это. –