异常在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。
来源:互联网 发布:函数式编程的优点 编辑:程序博客网 时间:2024/06/06 21:38
最近遇到子进程调用控件发生的异常的解决方法:
比如:子进程获取到的数据,并根据数据对Treeview 创建节点
//子进程方法
robot_GetPublicContactEvent()
则在子进程中创建节点 触发以下异常信息:在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。
错误原因:在多线程中,为了数据的安全,进(线)程是不能直接访问窗体控件的元素的。除了UI线程,其他线程不可以对控件进行操作
解决方法:采用Invoke 或者BeginInvoke();
本人用了Invoke ,附上代码:
//让委托去帮我创建Treeview节点
public delegate void CreateNodeDelegate();
//子进程方法
private void robot_GetPublicContactEvent()
{
if (this.InvokeRequired)
{
CreateNodeDelegate createNodeDelegate = new CreateNodeDelegate(CreateNode);
this.Invoke(createNodeDelegate);
}
}
private void CreateNode()
{
//添加节点 根据Root 获取公众号信息
//treeView
//所有人 公众号 联系人
TreeNode rootNode = new TreeNode("所有人");
treeView.Nodes.AddRange(new TreeNode[] { rootNode });
}
- 在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。
- 异常在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。
- 在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。(以解决)
- 在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。(以解决)
- 在该控件上执行的操作正从错误的线程调用。
- Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
- Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
- Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
- Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
- 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
- 浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别
- 浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别
- 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
- 在.Net中进行跨线程的控件操作(上篇:Control.Invoke)
- Control的Invoke和BeginInvoke 是相对于支线线程
- Control的Invoke和BeginInvoke 是相对于支线线程
- Control的Invoke和BeginInvoke 是相对于支线线程
- [ 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。]错误的处理
- web.xml不同版本约束
- 2.常用控件:AutoCompleteTextView
- 【C++】try 语句捕获异常,catch子句处理异常
- 信息安全第四篇(加密解密及安全网络通信模型)
- OpenJudge百炼-2692-假币问题-C语言-枚举
- 异常在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。
- struts2--struts2国际化(使用占位符)
- NSQ简介
- Java 多线程卖票例子
- Codeforce_832B_Petya and Exam_字符串模拟
- 配置多个数据源
- 剑指offer-13:在O(1)时间删除链表结点
- 欢迎使用CSDN-markdown编辑器
- 二叉树的遍历