В WPF ответственность за проверку на недопустимые вызовы между потоками возлагается на объект Dispatcher через член CheckAccess (). Такие объекты, как DependencyObject, используют связанный с ними Dispatcher для проверки доступа к нелегальным потокам практически во всех вызовах API.
В отличие от WinForms, в WPF нет возможности отключить эту проверку. Он включен по умолчанию и не может быть отключен.
Что касается того, почему это так (немного предположений здесь). Член CheckForIllegalCrossThreadCalls был добавлен в .net 2.0. Причина заключалась в том, что доступ к элементу управления из другого потока уже был незаконным, и не было никакого применения этого. Это привело к множеству непредсказуемых пользовательских сценариев, так как вместо упреждающего сбоя элемент управления мог бы иметь непредсказуемый behvaior.
В версии 2.0 команда WinForms добавила CheckForIllegalCrossThreadCalls для упреждающего предотвращения этих сценариев. Но поскольку некоторые люди сходили с рук , им пришлось вставить способ его отключения, чтобы приложения были обратно совместимы.
Если вам нужно отключить это, в вашем коде есть ошибка. Вы бы гораздо лучше обслужили, найдя и исправив ошибку, чем отключив проверку.