Как изящно выйти из AbandonedMutexException?

Я использую следующий код для синхронизации взаимоисключающего доступа к общему ресурсу между несколькими запущенными процессами.

Мьютекс создается так:

Mutex mtx = new Mutex(false, "MyNamedMutexName");

Затем я использую этот метод для входа во взаимоисключающий раздел:

public bool enterMutuallyExclusiveSection()
{
    //RETURN: 'true' if entered OK, 
    //         can continue with mutually exclusive section
    bool bRes;

    try
    {
        bRes = mtx.WaitOne();
    }
    catch (AbandonedMutexException)
    {
        //Abandoned mutex, how to handle it?

        //bRes = ?
    }
    catch
    {
        //Some other error
        bRes = false;
    }

    return bRes;
}

и этот код оставить его:

public bool leaveMutuallyExclusiveSection()
{
    //RETURN: = 'true' if no error
    bool bRes = true;

    try
    {
        mtx.ReleaseMutex();
    }
    catch
    {
        //Failed
        bRes = false;
    }

    return bRes;
}

Но происходит следующее: если один из запущенных процессов завершается сбоем или он завершается из диспетчера задач, мьютекс может вернутьсяAbandonedMutexException исключение. Итак, мой вопрос, каков изящный способ выбраться из этого?

Кажется, это работает нормально:

    catch (AbandonedMutexException)
    {
        //Abandoned mutex
        mtx.ReleaseMutex();
        bRes = mtx.WaitOne();    
    }

Но могу ли я войти во взаимоисключающий раздел в этом случае?

Может кто-нибудь уточнить?

Ответы на вопрос(1)

Ваш ответ на вопрос