2008-11-20 4 views
5

У меня есть единичный тест, который работает нормально локально, но при загрузке на сервер сборки TeamCity происходит сбой: «Процесс не может получить доступ к файлу, потому что он используется другим процессом».Определение процесса блокировки файла

  1. Перед тем, как сделать что-нибудь в тесте проверить в настройках, если файл существует и если да попытаться удалить его. Это терпит неудачу с такой же ошибкой сообщение, как указано выше
  2. Когда wriitng файл , я закрываю писатель затем распоряжаться им, которые я считаю, должен избавиться от каких-либо ресурсов.

Поэтому у меня есть несколько запросов

  1. Кто-нибудь были подобные проблемы и управлять ими, чтобы обойти их
  2. Как можно узнать, что programticall процесс эгоистично заблокировал файл !!!

Приветствия

+0

возможно дубликат [Как определить, какой процесс держит файл в Windows] (http://stackoverflow.com/questions/225802/how-to-determine-which-process-is- проведение-а-файл-в-окна) – 2012-06-13 11:51:40

ответ

1

Sysinternals FileMon имеет некоторую информацию (прокрутите вниз) о том, как они это сделали в старых версиях Windows.

Process monitor - их последняя версия, но она не дает много подсказок о том, как они это делают. Однако есть некоторые статьи базы знаний, которые должны привести вас к этой информации.

-Adam

4

handle.exe Sysinternals является первым шагом. Или используйте Process Explorer's Find Handle or DLL. Всегда безопаснее убить процесс, чем закрыть ручку.

Программно, это вопрос написания драйвера ядра, который читает таблицу дескрипторов Windows.