In WPF4 Unleashed Адам Натан заявляет:
Большинство классов WPF являются производными от DispatcherObject и поэтому по своей природе поточно-небезопасны .
Профессиональное программирование WPF утверждает обратное:
DispatcherObject является классом самого низкого уровня в иерархии каркаса, и, поскольку почти все объекты наследуются от него, большинство объектов по своей природе являются поточно-ориентированный
MSDN для DispatcherObject:
Только поток, в котором был создан Dispatcher, может напрямую обращаться к DispatcherObject.Чтобы получить доступ к DispatcherObject из потока, отличного от потока, в котором был создан DispatcherObject, вызовите Invoke или BeginInvoke для Dispatcher, с которым связан DispatcherObject.
На основе описания MSDN это выглядит как WPF4Выпущенная цитата была либо опечаткой, либо Натан был просто неправ, а Профессиональное программирование WPF авторы были правы ...
В любом случае классы, наследуемые от DispatcherObject, по своей сути поточно-поточные или по своей сутиthread-unsafe?
EDIT:
MSDN также заявляет:
Подклассы DispatcherObject, которые должны обеспечивать безопасность потока, могут сделать это, вызвав VerifyAccess для всех открытых методов,Это гарантирует, что вызывающий поток является потоком, в котором был создан DispatcherObject.
Это косвенно подтверждает, что утверждение WPF4 Unleashed в конце концов было точным ...