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();
}
));

这样就可以避免出现这个异常了。