1、invalidoperation exception:调用线程无法访问此对象,因为另一个线程拥有该对象。
出现这个错误的原因,我在网上查了很多。大体上总结一下是: 两个或多个线程操作一个控件所引起的问题。在WPF中,UI分创建线程和访问线程。所以需要用委托机制来解决。
比如我们使用MediaElement来播放视频,首次直接使用
this.mediaElement.Source = new Uri("video.mp4", UriKind.Relative);
this.mediaElement.Play();
来播放不会出问题,但在播放中我们需要使用该代码切换视频就会出现这个异常。我们可以修改成
this.mediaElement.Dispatcher.Invoke(new Action(
delegate
{
this.mediaElement.Source = new Uri("video5.mp4", UriKind.Relative);
this.mediaElement.Play();
}
));
这样就可以避免出现这个异常了。