C# 线程间操作无效: 从不是创建控件的线程访问它
2012-08-21 12:25
211 查看
我们在用线程操作的时候,可能会出现异常:线程间操作无效: 从不是创建控件richTextBox1的线程访问它。因为windows窗体控件不是线程安全的,如果几个线程操作某一控件的状态,可能会使该控件的状态不一致,出现争用或死锁状态。这种情况有以下解决办法:
利用委托机制实现线程安全。这种方法就是微软建议采用的跨线程调用的一种通用方法,就是使用代理来实现,就是将你所要操作的代码放到一个代理中,然后将这个代理交给创建这个控件的线程来执行你的代码。
private delegate void richTextBoxCallBack();
public void SetText(){
richTextBoxCallBack callback = delegate()//使用委托
{
richTextBox1.AppendText("test");
};
richTextBox1.Invoke(callback);
}
利用委托机制实现线程安全。这种方法就是微软建议采用的跨线程调用的一种通用方法,就是使用代理来实现,就是将你所要操作的代码放到一个代理中,然后将这个代理交给创建这个控件的线程来执行你的代码。
private delegate void richTextBoxCallBack();
public void SetText(){
richTextBoxCallBack callback = delegate()//使用委托
{
richTextBox1.AppendText("test");
};
richTextBox1.Invoke(callback);
}
相关文章推荐
- C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- bug:C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- C#中线程间操作无效: 从不是创建控件 txtBOX 的线程访问它
- C# 引发“线程间操作无效: 从不是创建控件“XXX”的线程访问它” 解决方法
- c# 线程间操作无效: 从不是创建控件“”的线程访问它,用托管来解决
- c#线程间操作无效: 从不是创建控件“textBox1”的线程访问它
- C#中线程间操作无效: 从不是创建控件 txtBOX 的线程访问它。
- 黄聪:BackGroundWorker解决“线程间操作无效: 从不是创建控件的线程访问它” (C# VS2008)
- C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- C#线程之间操作无效|不允许访问控件(c# 线程间操作无效: 从不是创建控件“”的线程访问它)
- c# 线程间操作无效,从不是创建控件的线程访问了它
- c#中Invoke使用方法(线程间操作无效: 从不是创建控件的线程访问它。那么创建它的线程是哪个线程?)
- c#线程问题:线程间操作无效:从不是创建控件 的线程访问它
- c#线程问题:线程间操作无效:从不是创建控件 的线程访问它InvalidOperationException异常
- C#线程间操作无效: 从不是创建控件“dataGridView1”的线程访问它
- C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它
- 【转】C#线程间操作无效: 从不是创建控件" XX" 的线程访问它
- C# 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- 线程间操作无效: 从不是创建控件“label1”的线程访问它。C#定时器