Подсказка содержится в этом предложении.
Даже если вы в настоящее время выполняете метод для класса, который не является производным от ContextBoundObject, например String, вы можете находиться в контексте по умолчанию, если ContextBoundObjectнаходится в вашем стеке в текущем домене приложения.
Таким образом, вы можете вызвать WaitOne
из класса, который не подкласс ContextBoundObject
, и при этом у вас не будет предвзятого мнения, что ContextBoundObject
был каким-либо образом связан с вашим кодом, и тем не менее рассматриваемый поток мог находиться в контексте не по умолчанию, потому что где-то в стеке вызовов метод экземпляра класса ContextBoundObject
мог бы выполняться без вашего ведома.
За исключением этого одиночного исключения, нет других способов войти в контекст синхронизации по умолчанию.
Есть довольно хорошая статья о потоке с дополнительной информацией, связанной с контекстами синхронизации, которую можно найти здесь .