SaveFileDialog блокирует съемный диск - PullRequest
3 голосов
/ 16 января 2009

Я использую SaveFileDialog, чтобы позволить пользователю выбрать каталог и имя файла на съемном диске. После этого я создаю этот файл, пишу в него и снова закрываю.

К тому времени сам файл не заблокирован (редактируемый, удаляемый), но я не могу извлечь диск, потому что Windows утверждает, что он все еще используется. Я должен выйти из приложения, прежде чем будет возможно извлечение.

Между прочим, диск блокируется, даже когда я выбираю файл только с помощью SaveFileDialog. Нажатие «Отмена» в диалоговом окне не вызывает проблемы

SaveFileDialog dlg = new SaveFileDialog();
dlg.DefaultExt = ".csv";
dlg.InitialDirectory = mySettings.defaultPath;
dlg.Filter = "(CSV-Dateien) *.csv|";
dlg.FileName = exportDate.ToString("yyyy-MM-dd") + ".csv";

if (dlg.ShowDialog() != DialogResult.OK){
    // USB-Drive is ejectable
}else{
    // USB-Drive is locked
}

1 Ответ

4 голосов
/ 19 января 2009

Я нашел 2 Решения :

Диалог изменяет текущий рабочий каталог, когда пользователь нажимает «Сохранить». Не файл, который блокировал съемный диск, а сама программа.

Так что вам нужно либо перенастроить рабочий каталог, как только вы закончите:

String oldDir = Directory.GetCurrentDirectory();
// ... do dialog...
Environment.CurrentDirectory = oldDir;

или вы просто настраиваете диалоговое окно файла для восстановления каталога перед вызовом ShowDialog ()

dlg.RestoreDirectory = true;
dlg.ShowDialog()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...