WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案
在这里以播放图片为例进行说明,代码如下:
void _Timer_Elapsed(object sender, ElapsedEventArgs e) { this.image.Dispatcher.Invoke( new Action( delegate { if (_CurrentIndex == _ImageFiles.Length - 1) { _CurrentIndex = 0; } else { _CurrentIndex++; } _CurrentImage = _ImageFiles[_CurrentIndex]; BitmapImage imgSource = new BitmapImage(); imgSource.BeginInit(); imgSource.UriSource = new Uri(_CurrentImage); imgSource.EndInit(); image.Source = imgSource; } ) ); }
如果直接在计时器里面设置 image.Source = imgSource,那么系统会提示“调用线程无法访问此对象,因为另一个线程拥有该对象。”,因此需要使用 this.image.Dispatcher.Invoke(),这样就能正常播放图片了!
参考链接:
https://blog.csdn.net/cselmu9/article/details/8274556