在对象的构造函数中,我需要创建一个 WPF mediaElement 对象:
m_videoMedia = new MediaElement();
但该类也可以从其他线程实例化,所以我需要使用
Dispatcher.Invoke(DispatcherPriority.Normal,
(Action)(() => { m_videoMedia = new MediaElement(); }));
但是我怎样才能在该构造函数中获得正确的调度程序实例:s
在对象的构造函数中,我需要创建一个 WPF mediaElement 对象:
m_videoMedia = new MediaElement();
但该类也可以从其他线程实例化,所以我需要使用
Dispatcher.Invoke(DispatcherPriority.Normal,
(Action)(() => { m_videoMedia = new MediaElement(); }));
但是我怎样才能在该构造函数中获得正确的调度程序实例:s
您很可能只使用Dispatcher.CurrentDispatcher .Invoke...
但是,如果由于某种原因不起作用,您可以让您的类接收对 Dispatcher 的引用作为其构造函数的一部分。只需Dispatcher.CurrentDispatcher
在构建时从 UI 线程传入。
大多数 WPF 控件派生自具有您需要的 Dispatcher 属性的 DispatcherObject 。所以基本上你会使用你想要使用的控件中的调度程序。在这种情况下,例如,添加 MediaElement 的 Window。
如果添加对System.Windows.Forms
项目的引用,则可以继续Application.DoEvents()
在 WPF 中使用。