在给桌面控件赋值是,由于线程问题,会导致如下报错:
调用线程无法访问此对象,因为另一个线程拥有该对象。解决办法如下:
控件名称.Dispatcher.Invoke(new Action(() => { 控件名称.属性 = 值 }));
this.PageIndex.Dispatcher.Invoke(new Action(() => { this.PageIndex.Content = 8; }));
Dispatcher.BeginInvoke(
new Action(() =>
this.PageIndex.Content = 666;
DispatcherPriority.ApplicationIdle);
SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机、32位ARM Cortex-M0处理器、128kB Flash存储器、以及丰富的数字接口。SYD8801片上集成了Balun无需阻抗匹配网络、高效率DCDC降压转换器,适合用于可穿戴、物联网设备等。具体可咨询:http
:
//www.sydtek.com/
调用
线程
无法访问
此
对象
,因为
另
一个
线程
拥有
该
对象
的问题的...
原因是
C#
中不允许多个
线程
同时
拥有
操控
一个
对象
的权利
解决
方法
利用委托机制, 子
线程
向主
线程
发起
一个
委托, 由主
线程
触发相关动作帮助我们完成操作
// 委托
lb.Dispatcher.Invoke(new Action(
delegat
WPF中在对界面进行操作的时候,可能会遇到“
调用
线程
无法访问
此
对象
,因为
另
一个
线程
拥有
该
对象
”异常,这是因为WPF中只有UI
线程
才能操作UI元素,非UI
线程
要访问UI时就会报异常了。
解决
方法:
Dispatcher.BeginInvoke()与Invoke()方法。BeginInvoke()异步执行,不等待委托结束就更新,Invoke()同步执行,需等待委托执行完。
Dispat...
System.InvalidOperationException:“
调用
线程
无法访问
此
对象
,因为
另
一个
线程
拥有
该
对象
。”原因
:
解决
方法:
WPF中只有UI
线程
才能操作UI元素,因此在编写委托事件进行传递参数来改变
对象
属性时,非UI
线程
要访问UI时就会报异常。
解决
方法:
法一:Dispatcher.BeginInvoke() 异步执行,不等待委托结束就更新
//将问题代码块放入此函数中
Dispatcher.BeginInvoke(
new Action(
delegate{
在调试中,出现这个错误的原因,我在网上查了很多。大体上总结一下是: 两个或多个
线程
操作
一个
控件所引起的问题。
在WPF中,UI分创建
线程
和访问
线程
。所以需要用委托机制来
解决
。
如果要在
另
一个
线程
中修改控件的Text属性(例如:ListBox控件类型的 lbConnected),如果直接写:lbStatus.Items.Add(str); 的话就会出现上述错误
当我们在
C#
中编写委托事件进行传递参数来改变
对象
属性时,容易引起
另
一个
线程
拥有
该
对象
的现象,这是
线程
之间的关联问题,要想
解决
此问题,我们就要将委托回来的
线程
对象
和当前函数中的
线程
对象
相关联。
//将出现问题的代码放在此函数中
Dispatcher.Invoke(
new Action(
delegate
//出问题的代码块