用线程写一个简单的DEMO:在一个WinForm中放一个命名为lblNumber的Label控件,每隔一秒刷新一下Label的Text,让它显示当前的秒数,从0显示到99。
如果用Timer那么拖来两个控件,敲几行代码,2分钟搞定。这里主要是做Demo说明匿名方法的用法,因此稍微麻烦一些:
private void MainForm_Load(object sender, EventArgs e)
{
Thread t = new Thread(() => {
for (int i = 0; i < 100;i++ )
{
SetLableText(i);
Thread.Sleep(1000);
}
});
t.Start();
}
private void SetLableText(int num)
{
if (lblNumber.InvokeRequired)
{
lblNumber.Invoke((MethodInvoker)(() => { SetLableText(num); }));
}
else
{
lblNumber.Text = num.ToString();
}
}
创建线程使用了匿名方法 ()=>{}; 给Label的Text赋值涉及到跨线程调用控件问题,必须使用委托,所以用了一个Invoke