Instruction C# lock, quel objet à verrou?

J'ai 3 questions que j'ai besoin d'aide.

  1. Quels sont les objets corrects/références à être passé sous la lock paramètres de déclaration? J'ai vu beaucoup d'exemples de codes et j'ai remarqué que les objets/références passé en pourrait éventuellement être non liées à la classe en cours ou de toute autre classe dans le programme tant que le modificateur d'accès static est non publique? E. g.:

    private Object anyObj = new Object();
    lock(anyObj){.....}
    
    private static readonly object Locker = new object();
    lock(Locker){.....}

    Il n'a tout simplement pas de sens pour moi.

  2. J'ai trouvé un exemple de code MSDN sur le multi threading qui utilise lock aussi des déclarations. Dans l'exemple il y a deux try/catch blocs avec le Monitor.Wait() en son sein. Si je comprends la logique correctement, le readerFlag va interdire le programme pour entrer dans le try/catch bloc à tous.
    Le code est l'exemple 2 à partir d'ici:

    http://msdn.microsoft.com/en-us/library/aa645740(v=vs. 71).aspx

  3. Comment puis-je exécuter un thread qui s'exécute en arrière-plan tant que le Formulaire de Windows est actif?

InformationsquelleAutor user1885498 | 2012-12-07