Я обнаружил проблему при попытке использовать Emgu для захвата изображений с веб-камеры.Для этого Emgu использует неуправляемые библиотеки opencv.Поэтому проблема в том, что я не могу обновить свой графический интерфейс (WPF Image control) из события Elapsed System.Timers.Timer.Я знаю, что он работает в другой ветке, но эй, вот почему я использую Dispatcher.Это первый раз, когда я не могу сделать это с Диспетчером.Получение InvalidOperationException с «Вызывающим потоком не удается получить доступ к этому объекту, так как он принадлежит другому потоку».Я провел целый день в поисках решения, но все еще не мог его исправить.Любые идеи, почему это происходит?
webcam.OnNewFrame += newBitmapSource => this.imgCaptured.Dispatcher.Invoke
(
new Action(delegate
{
this.imgCaptured.Source = newBitmapSource;
}),
DispatcherPriority.Background
);
Последнее, что на Stack Trace: System.Windows.Threading.Dispatcher.VerifyAccess ()
Однако, если я вызываю Dispatcher.CheckAccess () возвращает true.
ОБНОВЛЕНИЕ:
Наконец-то я выяснил это сам: BitmapSource должен был быть создан в потоке пользовательского интерфейса.Кажется, он не может использовать этот объект иначе.