VS2005的“从不是创建控件的线程访问它”的解决方法
2007-11-20 10:36
405 查看
在Visual Studio 2005 创建多线程应用程序时,访问对象时会出现 “从不是创建控件的线程访问它” 的错误,原因是防止多个线程同时对一个对象进行修改,解决办法如下类似的代码:
//创建代理
delegate void SetTextCallback(string text);
//创建和启动线程
this.demoThread = new Thread(new ThreadStart(this.ThreadProcUnsafe));
this.demoThread.Start();
//线程中要求改主窗体UI中的text属性
private void ThreadProcUnsafe()
{
this.SetText("This text was set safely.");
}
//调用窗体中的函数用invoke传递参数
private void SetText(string text)
{
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
//创建代理
delegate void SetTextCallback(string text);
//创建和启动线程
this.demoThread = new Thread(new ThreadStart(this.ThreadProcUnsafe));
this.demoThread.Start();
//线程中要求改主窗体UI中的text属性
private void ThreadProcUnsafe()
{
this.SetText("This text was set safely.");
}
//调用窗体中的函数用invoke传递参数
private void SetText(string text)
{
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
相关文章推荐
- 线程间操作无效 从不是创建控件 的线程访问它。——解决方法
- C# 线程操作 出现“从不是创建控件lstUser的线程访问它”错误的解决方法
- “从不是创建XX控件的线程访问它”错误的解决方法!
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法
- C# 引发“线程间操作无效: 从不是创建控件“XXX”的线程访问它” 解决方法
- 解决"从不是创建控件的线程访问它"
- 线程间操作无效: 从不是创建控件“”的线程访问它的解决方法~
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~【转】
- 线程间操作无效: 从不是创建控件“pbarc”的线程访问它 解决方法
- 线程间操作无效: 从不是创建控件“...”的线程访问它(解决方法)
- 小结“线程间操作无效: 从不是创建控件的线程访问它” 错误的解决方法
- 小结“线程间操作无效: 从不是创建控件的线程访问它” 错误的解决方法
- c# 线程间操作无效: 从不是创建控件“textBox1”的线程访问它。解决方法
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~ 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析
- 关于线程间操作无效: 从不是创建控件“xx”的线程访问它,错误解决方法
- VS2005的“从不是创建控件的线程访问它”
- C# 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~