Обнаружено использование файла не работает для изображений / папок - PullRequest
0 голосов
/ 07 июня 2011

Я использую этот код для отображения ошибки при открытии file:

try
{
    stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
}
catch (IOException)
{
    MessageBox.Show("file is open!");
}

Проблема в том, что код не работает с изображениями (jpg, bmp и др.) И с папками.

Есть ли что-то, чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Не знаю, понимаю ли я, что вы хотите сделать ... Я думаю, вы хотите узнать, просматривает ли кто-то это изображение в настоящее время.

Файл «открыт», только если какое-то приложение имеет открытый дескриптор к нему. Когда вы используете средство просмотра изображений, возможно (и вполне вероятно), что средство просмотра открывает файл, читает его и сразу же закрывает его. Следовательно, сам файл не используется.

Это относится ко всем видам файлов, но многие из них остаются специально открытыми (например, приложения Office обычно сохраняют свои файлы открытыми).

В общем, вы не должны предполагать, что «дескриптор файла открыт» и «пользователь-пользователь каким-то образом» использует «файл», действия вообще связаны. Файл может быть открыт, но ни один человек не взаимодействует (возможно, поисковый демон его индексирует). С другой стороны, файл может быть «видимым» для пользователя, но закрыт в файловой системе.

0 голосов
/ 07 июня 2011

этот код не будет работать в вашем сценарии. Затем вы открываете систему изображений, считывает файл, распаковываете изображение и показываете его вам и закрывает файл. Вы можете удалить его, пока он открыт в Windows.

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