Pracuję nad 2 usługami systemu Windows, które mają wspólną bazę danych, którą chcę zablokować (proces krzyżowy) za pomocą systemu Mutex.Czy powinienem zutylizować Mutex?
Teraz zastanawiam się, czy to jest ok, aby po prostu zadzwoń WaitOne()
i ReleaseMutex()
w try-finally
bloku czy mam również wyrzucać mutex (np w using
bloku). Jeśli tak, to chyba powinienem zawsze złapać AbandonedMutexException
na metodzie WaitOne()
, czy też się mylę?
Potrzebujesz wyjątku AbandonedMutexException, aby poinformować, że usługa posiadająca muteks została nieoczekiwanie zakończona. W takim przypadku * masz * do zaprzestania używania bazy danych i oczekiwania na ponowne uruchomienie drugiej usługi.Używanie trzeciego procesu do działania jako arbiter byłoby rozsądne. –