Как узнать, какие процессы используют файл в ASP.NET?

Я разрабатываю многопоточное приложение ASP.NET 3.5, во время работы с каким-то файлом получаю следующее исключение:

Процесс не может получить доступ к файлу, так как он используется другим процессом

Я ищу способ точно узнать, какой процесс блокирует этот файл, чтобы я мог остановить его доступ к файлу. ИЛИ, если это сложно, мне нужен способ заблокировать файл моим потоком, чтобы другие потоки/процессы не могли получить к нему доступ. Спасибо.


person Moayad Mardini    schedule 24.09.2009    source источник


Ответы (2)


Чтобы фактически заблокировать доступ к ресурсу (второй вариант, который вы предлагаете), вы можете использовать Mutex (взаимное исключение).

Я ничего этого не делал в .NET, но, похоже, есть хорошие статьи об этом.

person RB.    schedule 24.09.2009

Process Explorer позволит вам сделать это. Просто нажмите «Найти» -> «Найти дескриптор или DLL», затем введите имя вашего файла.

Затем он покажет вам каждый процесс с дескриптором этого файла.

person RB.    schedule 24.09.2009
comment
Я уже пробовал это, но этот неизвестный процесс использовал файл в течение очень короткого периода времени, поэтому мне не удалось его поймать! - person Moayad Mardini; 24.09.2009
comment
Хм, в таком случае я бы, наверное, начал добавлять логирование открытия файла в свое приложение, чтобы попытаться отследить, какой поток его открывает. Я уверен, что через секунду найдется кто-нибудь, кто расскажет вам отличный способ использования мьютексов или чего-то еще. - person RB.; 24.09.2009
comment
Похоже на антивирусный сканер. Вы пытались отключить его, если он у вас есть? - person RichardOD; 24.09.2009