/ / Ustalenie, który proces ma blokadę pliku - vb.net, file-io, teamcity

Określanie, który proces ma blokadę pliku - vb.net, file-io, teamcity

Mam test jednostkowy, który działa dobrze lokalnie, ale po przesłaniu go na serwer Build TeamCity kończy się niepowodzeniem. "Proces nie może uzyskać dostępu do pliku, ponieważ jest używany przez inny proces."

  1. Zanim zrobię cokolwiek w teście Sprawdzam ustawienia, jeśli plik istnieje i jeśli tak, spróbuj go usunąć. Nie powiedzie się z tym samym błędem wiadomość jak wyżej
  2. Podczas przeglądania plik, zamykam wtedy pisarza rozporządzam tym, co moim zdaniem powinno pozbyć się wszelkich zasobów.

Mam kilka pytań

  1. Czy ktoś miał podobne problemy i udało im się ominąć je
  2. Jak można dowiedzieć się programować wszystko proces samolubnie zablokował plik!!!

Twoje zdrowie

Odpowiedzi:

1 dla odpowiedzi № 1

Sysinternals FileMon ma trochę informacji (przewiń w dół) o tym, jak to zrobili w starszych wersjach systemu Windows.

Monitor procesu jest ich najnowszą wersją, ale nie daje wielu wskazówek co do tego, jak to robią. Istnieje jednak kilka artykułów z bazy wiedzy, które są tam połączone, co powinno doprowadzić cię do tych informacji.

-Adam


4 dla odpowiedzi nr 2

Sysinternals handle.exe to pierwszy krok. Albo użyj Process Explorer"s Find Handle or DLL. Zawsze jest bezpieczniej zabić proces niż zamknąć uchwyt.

Programowo, jest to kwestia napisania sterownika jądra, który odczytuje tabelę uchwytów systemu Windows.


2 dla odpowiedzi nr 3

ProcessMon (do znalezienia) i Unlocker (przynajmniej do odblokowania) są również przydatne.