private void button2_Click(object sender, EventArgs e)
{
try
{
int i = 0;
while (i < 1000)
{
this.label2.Text = i.ToString();
i++;
}
}
catch { }
}
如果直接调用方法,则 lable2会卡住,也就是界面卡住,程序只会呈现最终的结果。
想到了委托,思路:
最终目的lable2显示结果——实现的方法——委托把两件事串起来——执行命令
//【1】
delegate void getref(string name);//其实相当于是建了一个类,类中的参数与方法的参数一样
//【2】
void reftolab(string name)
{
this.label1.Text = name;
}
//【3】
void ThreadMethod()//主方法
{
try
{
int i = 0;
while (i < 1000)
{
i++;
this.Invoke(new getref(reftolab), "当前价格为:" + i.ToString());
}
}
catch { }
}
//执行命令【4】
private void button2_Click(object sender, EventArgs e)
{
Thread be = new Thread(new ThreadStart(ThreadMethod));
be.Start();
if( be.ThreadState==ThreadState.Stopped ) be.Abort();
}