Ответ 1
Что означает эта ошибка:
Эта ошибка означает, что вы пытаетесь открыть файл, который уже открыт с конфликтующими настройками доступа и совместного доступа.
Сообщение вводит в заблуждение, потому что файл не обязательно открывается другим процессом. Это исключение на уровне Win32. Это просто означает, что для этого файла открыт другой дескриптор.
Эта ошибка также применима к каталогам.
Как отладить его:
Узнайте, какой процесс или компонент в вашем приложении открыл файл и еще не закрыл его. Вы можете использовать Sysinternals Process Explorer "Find Handle", чтобы найти процесс нарушения и закрыть дескриптор.
Если ваш собственный код открыл дескриптор, нет общей процедуры для поиска проблемы. Просмотрите свой код. Код комментария до тех пор, пока ошибка не исчезнет.
Общие ошибки:
- Утечка a
FileStream
:File.Open(path); //leak!
- Не переносить ресурсы в оператор
using
. В большинстве случаев одноразовые ресурсы должны быть заключены вusing
. - Открыв файл в каком-либо приложении, например:
- Текстовый редактор
- Инструмент разработки
- Сервер базы данных
- Окно проводника Windows с соответствующим выбранным файлом
- Окно командной строки, которое имеет соответствующий каталог, заданный как текущий каталог
Как исправить:
Закройте другие приложения, используя этот файл. Убедитесь, что вы закрываете свои файлы, когда закончите с ними. Используйте оператор using
.