Como sair da AbandonedMutexException?

Eu uso o seguinte código para sincronizar o acesso mutuamente exclusivo a um recurso compartilhado entre vários processos em execução.

O mutex é criado como tal:

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

Então eu uso este método para entrar na seção mutuamente exclusiva:

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;
}

e esse código para deixar:

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

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

    return bRes;
}

Mas o que acontece é que, se um dos processos em execução falhar, ou se for finalizado a partir de um Gerenciador de Tarefas, o mutex poderá retornarAbandonedMutexException exceção. Então, minha pergunta é: qual é a maneira elegante de sair disso?

Isso parece funcionar bem:

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

Mas posso entrar na seção mutuamente exclusiva nesse caso?

Alguém pode esclarecer?

questionAnswers(1)

yourAnswerToTheQuestion