Я пишу небольшое приложение для экспорта и импорта данных из базы данных с использованием .NET DataSets и XML, и в качестве части этого я делаю следующее.StreamWriter, FileStream и блокировки файлов Windows
StreamWriter sw = new StreamWriter(file);
sw.Write(xml.OuterXml);
sw.Close();
Проблема заключается в том, что близкий метод закрывает (параметр файла передается в конструктор) FileStream, но не освобождает блокировку файла. Файл является тем, что созданная мной программа создает, поэтому я знаю, что ничто другое не блокирует ее.
Есть ли что-то, что я делаю неправильно или это ошибка в окнах?
EDIT
Да «файл» является объектом FileStream, и я наивно полагал, что вызов близко() на потоке, который оборачивает поток файлов будет также очистки и отчуждать основной поток файла, вызвав FileStream. близкий способ. Но я не уверен в этом.
Обертка этого в используемом блоке все еще имеет тот же эффект.
Одна дополнительная нота является то, что объект FileStream создается в другом методе, но это не имеет никакого значения,
Как вы определяете, что файл по-прежнему заблокирован? Я делаю это довольно часто, и я никогда не сталкивался с проблемой, которую вы описываете. – 2010-11-24 00:25:29
Да, что такое «файл»? Это FileStream? Если это так, вам нужно закрыть его, и это не ошибка ОС. Как и Джим, у меня нет проблем с простыми операциями ввода-вывода. – 2010-11-24 01:19:23
Вы можете контролировать блокировку файлов «анал-ретентивный» и «притворный». Если вы не хотите блокировать файл при его открытии, скажите так: http://msdn.microsoft.com/en-us/library/5h0z48dh.aspx http://msdn.microsoft.com/en-us /library/system.io.fileshare.aspx – 2010-11-24 01:21:58