system.io.exception отказано в доступе к пути при запуске с использованием класса Directory в нескольких программах - PullRequest
0 голосов
/ 30 июня 2010

У меня есть две программы, которые обращаются к каталогу с использованием статических методов класса .NET Directory.

Первая программа только читает каталог, а вторая пытается переименовать каталог.Каталог, переименованный второй программой, может не совпадать с каталогом, который читает первая программа.

Когда вторая программа пытается переименовать каталог (я использую Directory.Move (sourceDir,destDir), я получаю сообщение об ошибке:

system.io.exception. Доступ к пути запрещен

Я подозреваю, что причина этого в том, что я должен использовать методы DirectoryInfo(которые являются экземплярами, а не статичными).Кто-нибудь сталкивался с этой проблемой раньше?

Ответы [ 3 ]

3 голосов
/ 04 августа 2010

Насколько я могу судить, решением моей проблемы было использование объектов System.IO.DirectoryInfo вместо статического класса System.IO.Directory. Единственные подсказки, которые я мог найти относительно того, почему это решает мою проблему, это здесь , где говорится, что проверки безопасности не происходят для всех методов в экземпляре DirectoryInfo, но проверки безопасности всегда происходят для методов, вызываемых статическим Справочник класса.

Несмотря на то, что это решает мою проблему, оно не дает мне достаточно информации о том, почему это работает. Если кто-нибудь может дать мне больше информации, я был бы признателен.

0 голосов
/ 03 декабря 2014

Попробуйте это ..

 DirectoryInfo dirInfo = new DirectoryInfo(oldPath);
 dirInfo.MoveTo(newPath);
0 голосов
/ 18 мая 2011

Еще одна хитрость, которую я обнаружил, которая может быть неэффективной и неэффективной, - это вызвать gc.collect () перед выполнением некоторых операций ввода-вывода (перемещение файлов, директории и т. Д.). Не самая лучшая идея, но одна из самых удобных хитростей, когда-либо узнал, работая с SQLite, что перешло на работу ввода-вывода в офисе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...