Combien de temps un C# attente de verrouillage, et en ce que si le code se bloque pendant le lock?

j'ai vu le code suivant, et je voulais l'utiliser pour une activité simple qui ne peut être exécutée à la fois, et de ne pas se produire fréquemment (donc la chance de se produisant deux fois à un moment, c'est très petit, mais on ne sait jamais).

Donc le code:

 //class variable
    private static object syncRoot = new object();

    //in a method:
    lock (syncRoot)
    {
     DoIt();
    }

quand un autre thread arrive et veut exécuter le code, combien de temps faudra-il attendre jusqu'à ce que le verrou est libéré? pour toujours, ou vous pouvez en quelque sorte de définir un délai d'attente?

et la seconde: si l' DoIt() méthode lève une exception, la serrure est encore sorti?

InformationsquelleAutor Michel | 2011-05-18