首页 新闻 会员 周边

WPF 线程之间调用参数的问题!

0
悬赏园豆:50 [已解决问题] 解决于 2014-09-26 17:43
        /// <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!

咲丶的主页 咲丶 | 初学一级 | 园豆:58
提问于:2014-09-26 16:49
< >
分享
最佳答案
0

把socket.Img的内容化为内存数据再调用。

或者

把socket.Img内容化为临时文件。

错误原因是:socket.Img是一个线程相关的对象,跨线程使用就报告这个错误。

收获园豆:50
519740105 | 大侠五级 |园豆:5810 | 2014-09-26 17:08

谢谢了! 变成byte[]了,可以了!

咲丶 | 园豆:58 (初学一级) | 2014-09-26 17:43
其他回答(1)
0

socket.Img别其他线程占用了可以用这个办法解决

对 socket.Img 复制拷贝一份 

s_p | 园豆:138 (初学一级) | 2014-09-26 17:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册