C# 多线程,跨线程访问
2018-01-01 18:14
218 查看
private void button4_Click(object sender, EventArgs e)
{
Thread thread1 = new Thread(ShowResult);
thread1.IsBackground = true;
thread1.Start();
}
private void ShowResult()
{
int a = 0;
for (int i = 0; i < 600000000; i++)
{
a = i;
}
if (this.textBox1.InvokeRequired)//是否要对文本框进行跨线程访问。
{
//Invoke:去找创建TextBox的线程(主线程(UI线程)),由主线程完成委托方法的调用。
this.textBox1.Invoke(new Action<TextBox, string>(ShowTextBoxValue), this.textBox1, a.ToString());//Action是无返回值的委托
}
else //否则不是跨线程访问
{
this.textBox1.Text = a.ToString();
}
}
//委托注册的函数,跨线程访问,跨线程修改TextBox的值,其实是通过invoke方法让主线程调用该方法。
private void ShowTextBoxValue(TextBox txt,string value)
{
txt.Text = value;
}
{
Thread thread1 = new Thread(ShowResult);
thread1.IsBackground = true;
thread1.Start();
}
private void ShowResult()
{
int a = 0;
for (int i = 0; i < 600000000; i++)
{
a = i;
}
if (this.textBox1.InvokeRequired)//是否要对文本框进行跨线程访问。
{
//Invoke:去找创建TextBox的线程(主线程(UI线程)),由主线程完成委托方法的调用。
this.textBox1.Invoke(new Action<TextBox, string>(ShowTextBoxValue), this.textBox1, a.ToString());//Action是无返回值的委托
}
else //否则不是跨线程访问
{
this.textBox1.Text = a.ToString();
}
}
//委托注册的函数,跨线程访问,跨线程修改TextBox的值,其实是通过invoke方法让主线程调用该方法。
private void ShowTextBoxValue(TextBox txt,string value)
{
txt.Text = value;
}
相关文章推荐
- 初试C#多线程_跨线程访问控件
- 黄聪:C#“多线程线程间操作无效: 从不是创建控件的线程访问它。”,跨线程修改控件属性解决方案
- C# 多线程与跨线程访问界面控件
- c#中使用多线程访问winform中控件的若干问题 解决线程间操作无效: 从不是创建控件的线程访问它
- c#之多线程 (跨线程访问可视化控件)
- c#在多线程中访问控件
- 当JNI遇到多线程--java对象如何被C++中的多个线程访问?
- [叩响C#之门]写给初学者:多线程系列(一)——线程的概念
- C# 多线程、异步线程、线程池相关知识
- C#多线程与跨线程访问界面控件的方法
- java多线程与线程并发五:多个线程访问共享对象和数据的方式
- (转)c#(wince)中使用多线程访问winform中控件的问题
- c# 线程间操作无效: 从不是创建控件“textBox1”的线程访问它。解决方法
- C#跨线程访问
- C# 使用多线程访问winform中控件
- 线程间操作无效:从不是创建控件“XX”的线程访问它,多线程问题
- C#中跨线程访问控件问题解决方案
- C# 多线程的等待所有线程结束 用 ManualResetEvent 控制
- C# WinFrom 跨线程访问控件
- C# 线程手册 第五章 多线程应用程序 .NET 中的扩展性