首页 > 代码库 > 初遇多线程
初遇多线程
初次接触多线程是想做一个进度条,然后让界面有一个防假死的效果。了解的不深,先浅显的记录一下:
private Thread fThread ; //定义一个进程
//开始进程
private void btdoit_Click(object sender, EventArgs e)
{
fThread = new Thread(new ThreadStart(addinfo));//指定进程执行的函数为addinfo;
fThread.Start();
}
private void addinfo()//这就是进程执行的函数了,不多记
{
。。。。。
}
使用多线程时遇到的状况:
1、跨线程调用控件
在调用控件前加上这个,如这里要调用ListView控件:
if (this.listViewfw.InvokeRequired)
{
addinfoCallback acb = new addinfoCallback(addinfo);
this.listViewfw.Invoke(acb, new object[] { });
}
else
{
//要执行的操作
}
2、执行一个大的循环时,进度条值可以改变,lable的值却不能实时更改(这个应该与多线程无关,只是遇到了就顺带记录一下)
在改变Lable或其它控件值前加上这句:
Application.DoEvents();//这句我查了一下,说是会造成系统短暂的停顿,影响速度,需要慎用。
初遇多线程