c#线程问题:线程间操作无效:从不是创建控件 的线程访问它InvalidOperationException异常
来源:互联网 发布:nba纳什数据 编辑:程序博客网 时间:2024/05/19 00:49
出现 InvalidOperationException异常 及其解决方法
问题描述:
通常情况下,显示界面(如Winform)的工作是由一个单独的线程完成的,假设它为线程A。
此时,如果有另外一个线程假设名为线程B,线程B想在线程A的界面中显示一行文本信息,这个时候如果线程B直接调用线程A中的显示控件的方法,就有可能会出现InvalidOperationException异常。
如 界面中有一个richtextbox组件,如果在线程B中使用this.richtextbox.AppendText 方法,就会出现异常。
解决方法:
//在Windows From里面,需要在线程里面访问界面元素,需要使用beginInvoke来完成.
Invoke 方法允许同步执行控件上的方法,而 BeginInvoke 方法则初始化异步执行。
要使用这些方法,必须用与将调用的方法相同的签名声明委托。然后,您可以通过向要调用的方法提供适当的委托来调用窗体上任何控件的 Invoke 或 BeginInvoke 方法。任何必需的参数都包装在 Object 中,并被传输到该方法。
namespace TestInteractiveThread
{
public partial class FormMain : Form
{
private RichTextBox richTextBox;
public delegate void ShowMessageDelegate( string mess);
private void ShowMessage( string mess )
{
this.richTextBox.AppendText(mess);
}
......
......
......
//假如有一个线程B的函数,在函数体里面应该这样让界面显示信息
this.richTextBox.BeginInvoke( new ShowMessageDelegate(ShowMessage) , new objec[]{ "Message to show" } )
//new objec[]{ "Message to show" }表示将参数"Message to show"传递给ShowMessage函数
}// end for class FormMain
}
参考文档:http://hi.baidu.com/dxawddd/blog/item/af1b95e7edc93429b838207c.html “线程间操作无效: 从不是创建控件“progress1”的线程访问它”
- c#线程问题:线程间操作无效:从不是创建控件 的线程访问它InvalidOperationException异常
- c#线程问题:线程间操作无效:从不是创建控件 的线程访问它InvalidOperationException异常
- System.InvalidOperationException: 线程间操作无效: 从不是创建控件“labelControl1”的线程访问它
- c#线程问题:线程间操作无效:从不是创建控件 的线程访问它
- c#关于“线程间操作无效: 从不是创建控件的线程访问它”的问题
- C#多线程问题:线程间操作无效: 从不是创建控件“label4”的线程访问它
- WinForm中线程问题:线程间操作无效: 从不是创建控件“...”的线程访问它
- WinForm中线程问题:线程间操作无效: 从不是创建控件“...”的线程访问它
- C# 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- c# 线程间操作无效: 从不是创建控件“FormMain”的线程访问它
- BackGroundWorker解决“线程间操作无效: 从不是创建控件的线程访问它” (C# VS2008)
- C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- 线程间操作无效: 从不是创建控件“label1”的线程访问它。C#定时器
- c# 线程间操作无效: 从不是创建控件“0”的线程访问它
- C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- c# 线程间操作无效,从不是创建控件的线程访问了它
- c# 线程间操作无效: 从不是创建控件“textBox1”的线程访问它。解决方法
- 【转】C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- 模仿仿真火焰的设备和方法
- Windows sockets 网络编程(三)— 非阻塞模式开发
- C#笔记12:索引器
- 读取Spring配置文件
- MSN space will be shut down
- c#线程问题:线程间操作无效:从不是创建控件 的线程访问它InvalidOperationException异常
- C#笔记13:迭代器
- 嵌入式linux与ARM开发板的入门建议
- 从 Delphi 7 到 Delphi 2010
- windows系统下JDK1.6环境变量配置
- Hdfs-Raid tools文档翻译
- 人民币大写的正确写法(开票据事项)
- 解决 WPF 自绘窗体 AllowsTransparency = true 和 Webbrowser 等内置窗体显示冲突的办法和思路
- 动态添加Table