Чтобы ответить на первый из ваших вопросов, DirectoryInfo.Delete
звонит Directory.Delete
. Если вы работаете в режиме выпуска, возможно, компилятор оптимизировал ваш код, и вы видите только базовый вызов.
Изменить: я только что провел несколько тестов в VS2013. Когда мой проект был релизной сборкой, скомпилированной для Any CPU
, я мог видеть вызов DirectoryInfo.Delete
перед вызовом Directory.Delete
в трассировке стека:
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
at System.IO.DirectoryInfo.Delete()
at test.Program.Main(String[] args) in c:\Projects\test\Program.cs:line 21
но когда я скомпилировал сборку релиза для x64, он показал только вызов Directory.Delete
:
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
at test.Program.Main(String[] args) in c:\Projects\test\Program.cs:line 22
Похоже, что происходит некоторая оптимизация (кстати, код не менялся между тестами — я предполагаю, что изменение номера строки также как-то связано с оптимизацией компилятора).
Взгляните на этот вопрос - удаление информации о каталоге против удаления каталога
Чтобы ответить на ваш другой вопрос - у вас был файл в каталоге, открытый в другом приложении? Есть много причин, по которым другой процесс может что-то делать с этой папкой.
person
Matt Hogan-Jones
schedule
19.05.2015
var dirInfo = new DirectoryInfo("C:\foo\folder"); dirInfo.Delete();
. Ничего между этими двумя утверждениями? Просто тренируете жесткий диск? Улучшение вашего кода может заключаться в том, чтобы ничего не делать... - person spender   schedule 19.05.2015try-catch
или ловите первый шанс с помощью отладчика? - person Yuval Itzchakov   schedule 19.05.2015try-catch
, я вижу вызовDirectoryInfo.Delete
в ST. - person Yuval Itzchakov   schedule 19.05.2015