WPF中调用线程无法访问此对象,因为另一个线程拥有该对象 的解决方法
来源:互联网 发布:xmind软件下载 编辑:程序博客网 时间:2024/05/07 16:06
在调试中,出现这个错误的原因,我在网上查了很多。大体上总结一下是: 两个或多个线程操作一个控件所引起的问题。
在WPF中,UI分创建线程和访问线程。所以需要用委托机制来解决。
如果要在另一个线程中修改控件的Text属性(例如:ListBox控件类型的 lbConnected),如果直接写:lbStatus.Items.Add(str); 的话就会出现上述错误。
解决如下:
添加一个 AddStringToListBox 函数:
private delegate void AddStringToListBoxDelegate(string str); /// <summary> /// 在ListBox中追加状态信息 /// </summary> /// <param name="str">要追加的信息</param> private void AddStringToListBox(string str) { if (!lbStatus.Dispatcher.CheckAccess()) { AddStringToListBoxDelegate d = AddStringToListBox; lbStatus.Dispatcher.Invoke(d, str); } else { lbStatus.Items.Add(str); } }
然后把刚才的 lbStatus.Items.Add(str); 修改为
AddStringToListBox(string.Format("开始在:{0}:{1}监听客户连接",txtServerIP.Text, port));里面的参数不用管他,是我的项目里的内容,你可以换成你自己的参数。
但是现在还是出了个问题,提示参数里面的 txtServerIP.Text 的错误信息 “由于以前的函数求值超时 函数求值被禁用。必须继续执行才能重新启用函数求值。”,我想了想,还是同样的原因,因为 txtServerIP 与 ListBox 是一个性质的,所以我在网上查了一下,这位的文章帮我解决了这个问题 点击打开链接
我按照他的方法,把代码做了一些修改,当然 AddStringToListBox 的方法不需要改,只是在调用的地方做一下修改,具体如下:
txtServerIP.Dispatcher.Invoke( new Action( delegate { AddStringToListBox(string.Format("开始在:{0}:{1}监听客户连接", txtServerIP.Text, port)); } ) ); //AddStringToListBox(string.Format("开始在:{0}:{1}监听客户连接",txtServerIP.Text, port));
- WPF中调用线程无法访问此对象,因为另一个线程拥有该对象 的解决方法
- 用了invoke还是出错的解决方法.wpf 调用线程无法访问此对象,因为另一个线程拥有该对象。
- WPF调用线程 解决“调用线程无法访问此对象,因为另一个线程拥有该对象“问题
- WPF调用线程 解决“调用线程无法访问此对象,因为另一个线程拥有该对象“问题
- WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案
- WPF 调用线程无法访问此对象,因为另一个线程拥有该对象
- wpf调用线程无法访问此对象,因为另一个线程拥有该对象
- WPF 调用线程无法访问此对象,因为另一个线程拥有该对象
- WPF异常:调用线程无法访问此对象,因为另一个线程拥有该对象。
- Wpf 调用线程无法访问此对象,因为另一个线程拥有该对象,解决方案
- WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案以及如何实现字体颜色的渐变
- WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案以及如何实现字体颜色的渐变
- 关于调用线程无法访问此对象,因为另一个线程拥有该对象的问题的解决办法
- WPF[调用线程无法访问此对象,因为另一个线程拥有该对象]主窗口MainWindow 创建的子线程 调用窗口线程的控件方法
- [调用线程无法访问此对象,因为另一个线程拥有该对象。]
- 调用线程无法访问此对象,因为另一个线程拥有该对象
- 调用线程无法访问此对象,因为另一个线程拥有该对象
- C#技巧【调用线程无法访问此对象,因为另一个线程拥有该对象的问题的解决办法】
- Octopress侧边栏及评论系统定制
- (队列的应用5.3.1)ZOJ 3210 A Stack or A Queue?根据进入结构的序列和离开结构的序列确定是stack还是queue)
- android luncher布局修改
- 漫画:为什么不能打断程序员?
- python模块之smtplib: 用python发送SSL/TLS安全邮件
- WPF中调用线程无法访问此对象,因为另一个线程拥有该对象 的解决方法
- 上拉电阻的作用(转
- 让你尖叫的13种思维方式
- 上网本设置扩展显示器分辨率
- 目标检测的图像特征提取之(一)HOG特征
- Octopress主题样式修改
- go 安装与使用
- uva 10721 - Bar Codes(dp)
- 基于STK的SAR卫星轨道预报设计与仿真