C'est une très ancienne verrue dans les frameworks .net; il suffit de passer en faux et de passer à autre chose.
Le "contexte" auquel ils font référence est un contexte d'accès distant. Vous pouvez essayer de vider ce concept en recherchant ContextBoundObject dans MSDN; Cela vous mènera à toutes sortes de choses intéressantes. À un moment donné de la conception du CLR, ces «contextes d'objets» allaient être beaucoup plus importants qu'ils ne l'étaient réellement; Beaucoup de gens ont oublié qu'ils existaient en premier lieu, et la seule API que la plupart des gens rencontrent et qui a quelque chose à voir avec les CBO est Monitor.Wait.
Donc il suffit de passer en faux et de passer à autre chose. :)
Nous pouvons aller encore plus loin si vous voulez ...
Il y avait une notion de configuration d'un de ces contextes d'objet à « synchronisé ». Il s'avère que dans le CLR, chaque thread a un contexte d'appel logique qui lui est associé. Lorsque vous effectuez un appel de méthode avec un accès distant, ce contexte d'appel logique est transmis avec l'appel, de sorte que le CLR de l'autre côté de la limite d'accès peut traiter le thread traitant la requête comme étant logiquement le même thread. Si l'objet appelé (celui de l'autre côté de la frontière d'accès distant) rappelle dans l'objet original, alors ce deuxième appel peut être sur un fil physique différent. Toutefois, étant donné que le contexte d'appel logique a coulé avec l'appel distant, ce deuxième thread physique peut entrer à nouveau dans le contexte "synchronisé".
Un exemple de ceci est loin de complexe pour essayer d'écrire ici. Je peux en écrire un pour vous sur demande, mais ...
C'est une très ancienne verrue dans les frameworks .net; il suffit de passer en faux et de passer à autre chose. :)