Bonjour,

J'expérimente un peu les locks avec les threads et je m'interroge sur une chose.
Il est possible de locker des bouts de code pour éviter que deux threads y accède au même moment.

Mais est-il possible de locker un objet de façon à ce que personne ne peut l'utiliser tant qu'il est locké ?

Par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
    public MethodA()
    {
        lock (obj)
        {
            Thread.Sleep(5000);
        }
    }
 
    public MethodB()
    {
        obj.DoSomething();
    }

Est-il possible que la methodeB ne puisse pas executer "DoSomething" pendant 5 secondes car locker par la methodeA?
Je sais que si je lock l'objet obj dans methodeB, cela aura l'effet voulu mais on a pas toujours la possibilité d'accéder à ce code ou alors il peut être à tellement d'endroit....

Merci