System.InvalidOperationException: 线程间操作无效: 从不是创建控件“labelControl1”的线程访问它
来源:互联网 发布:网络销售人员业务流程 编辑:程序博客网 时间:2024/06/05 14:07
今天来给大家介绍关于C#异常:线程间操作无效: 从不是创建控件“xxx”的线程访问它的解决办法。
C# WinForm开发中,这是一个比较常见的异常:线程间操作无效,从不是创建控件“xxx”的线程访问它。这个异常来源于.NET2的一个限制:工作线程不能访问窗口线程创建的控件。解决方法主要有两种,一种是在窗口线程中设置CheckForIllegalCrossThreadCalls = false ;另一种方式比较麻烦,使用委托的方式调用Invoke方法。
C# WinForm开发中,这是一个比较常见的异常:线程间操作无效,从不是创建控件“xxx”的线程访问它。这个异常来源于.NET2的一个限制:工作线程不能访问窗口线程创建的控件。解决方法主要有两种,一种是在窗口线程中设置CheckForIllegalCrossThreadCalls = false ;另一种方式比较麻烦,使用委托的方式调用Invoke方法。
异常信息:
System.InvalidOperationException: 线程间操作无效: 从不是创建控件“labelControl1”的线程访问它。
在 System.Windows.Forms.Control.get_Handle()
在 System.Windows.Forms.Control.set_WindowText(String value)
在 System.Windows.Forms.Control.set_Text(String value)
在 DevExpress.XtraEditors.LabelControl.set_Text(String value)
在 System.Windows.Forms.Control.get_Handle()
在 System.Windows.Forms.Control.set_WindowText(String value)
在 System.Windows.Forms.Control.set_Text(String value)
在 DevExpress.XtraEditors.LabelControl.set_Text(String value)
第一步:
//声明委托
delegate void SetValueEventHandler(LabelControl label, string text);
第二步:
/// <summary>
/// 设置LabelControl的值
/// </summary>
/// <param name="LabelControl">label控件</param>
/// <param name="text">值</param>
/// 设置LabelControl的值
/// </summary>
/// <param name="LabelControl">label控件</param>
/// <param name="text">值</param>
private void SetLabelValue(LabelControl label, string text)
{
// 对于该控件的请求来自于创建该控件所在线程以外的线程
if (label.InvokeRequired)
{
var set = new SetValueEventHandler(delegate(LabelControl _label, string _text)
{
_label.Text = _text;
});
this.Invoke(set, label, text);
}
else
{
label.Text = text;
}
}
第三步:
new Thread(new ThreadStart(delegate()
{
try {
// 直接设置会引发异常:线程间操作无效,从不创建控件的线程访问它
// CheckForIllegalCrossThreadCalls = false;
// this.button1.Enabled = true;
// 用委托的方式
SetLabelValue(LabelControl1,"5000");
}catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
})).Start();
美丽元素返利网(http://www.mlyuansu.com)
- System.InvalidOperationException: 线程间操作无效: 从不是创建控件“labelControl1”的线程访问它
- c#线程问题:线程间操作无效:从不是创建控件 的线程访问它InvalidOperationException异常
- c#线程问题:线程间操作无效:从不是创建控件 的线程访问它InvalidOperationException异常
- WinForm中线程问题:线程间操作无效: 从不是创建控件“...”的线程访问它
- c#线程问题:线程间操作无效:从不是创建控件 的线程访问它
- WinForm中线程问题:线程间操作无效: 从不是创建控件“...”的线程访问它
- “线程间操作无效:从不是创建控件“XX”的线程访问它”的解决方法
- 线程间操作无效: 从不是创建控件“”的线程访问它的解决方法
- 小结“线程间操作无效: 从不是创建控件的线程访问它” 错误的解决方法
- 小结“线程间操作无效: 从不是创建控件的线程访问它” 错误的解决方法
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法!
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- 小结“线程间操作无效: 从不是创建控件的线程访问它” 错误的解决方法
- 小结“线程间操作无效: 从不是创建控件的线程访问它” 错误的解决方法
- 线程间操作无效 从不是创建控件“___”的线程访问它”解决方法的疑惑
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法
- C# 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- 消息队列
- WCF建证书步骤
- CentOS卸载apache php mysql
- NGUI学习笔记
- 判断俩链表是否相交
- System.InvalidOperationException: 线程间操作无效: 从不是创建控件“labelControl1”的线程访问它
- 全面整理C#和Java的异同
- 一步步搭建ubuntu server console(控制台,字符模式)开发环境
- 安卓-API GUIDES--Linear Layout
- 全面解析回溯法:算法框架与问题求解
- 【每周一译】愚蠢的指标:Java中使用最多的关键字
- Oracle操作管理之用户和角色
- boost::to_upper_copy详解
- Hibernate 配置详解(12) 补充