/// <summary> /// 对控件操作 在非主线程下需要调用此代理 /// </summary> private delegate void MyInvoke(BitmapImage img); /// <summary> /// 接收信息事件 /// </summary> /// <param name="socket"></param> /// <param name="e"></param> private void ReceiveEvent(SocketUdpServer socket, EventArgs e) { this.Dispatcher.Invoke(new MyInvoke(ChangeImage), socket.Img); } /// <summary> /// 改变图片 /// </summary> /// <param name="img">图片</param> private void ChangeImage(BitmapImage img) { this.picReceive.Source = img; }
就是为了改变图片! 错误就是: 调用线程无法访问此对象,因为另一个线程拥有该对象。
把socket.Img的内容化为内存数据再调用。
或者
把socket.Img内容化为临时文件。
错误原因是:socket.Img是一个线程相关的对象,跨线程使用就报告这个错误。
谢谢了! 变成byte[]了,可以了!
socket.Img别其他线程占用了可以用这个办法解决
对 socket.Img 复制拷贝一份