Jak się dowiedzieć, które procesy używają pliku w ASP.NET?

Zajmuję się tworzeniem wielowątkowej aplikacji ASP.NET 3.5, podczas pracy z jakimś plikiem otrzymuję następujący wyjątek:

Proces nie może uzyskać dostępu do pliku, ponieważ jest używany przez inny proces

Szukam sposobu, aby dowiedzieć się dokładnie, który proces blokuje ten plik, abym mógł zatrzymać jego dostęp do pliku. LUB jeśli jest to skomplikowane, chcę mieć sposób na zablokowanie pliku przez mój wątek, aby inne wątki/procesy nie miały do ​​niego dostępu. Dziękuję.


person Moayad Mardini    schedule 24.09.2009    source źródło


Odpowiedzi (2)


Aby faktycznie zablokować dostęp do zasobu (druga opcja, którą sugerujesz), możesz użyć Mutex (wzajemne wykluczenie).

Nie robiłem tego w .NET, ale wydaje się, że jest dobre artykuły na ten temat.

person RB.    schedule 24.09.2009

Eksplorator procesów pozwoli Ci to zrobić. Po prostu kliknij „Znajdź” -> „Znajdź uchwyt lub DLL”, a następnie wprowadź nazwę pliku.

Następnie pokaże Ci każdy proces z dojściem do tego pliku.

person RB.    schedule 24.09.2009
comment
Próbowałem już tego, ale ten nieznany proces używał pliku przez bardzo krótki czas, więc nie miałem szczęścia go złapać! - person Moayad Mardini; 24.09.2009
comment
Hmm - w takim przypadku prawdopodobnie zacząłbym dodawać logowanie otwierania pliku do mojej aplikacji, aby spróbować prześledzić, który wątek go otwiera. Jestem pewien, że za chwilę znajdzie się ktoś, kto powie ci świetny sposób na użycie muteksów lub coś takiego. - person RB.; 24.09.2009
comment
Brzmi jak skaner antywirusowy. Czy próbowałeś go wyłączyć, jeśli go masz? - person RichardOD; 24.09.2009