winform基于异步委托实现多线程摇奖器

2019-12-26 12:29:12于海丽

Random random = new Random();
//随机生成6个数
while (listNum.Count <= 6)
{
int n = random.Next(0, 10);
listNum.Add(n);
}
//不是创建此控件的线程调用此控件的时候就必须调用invoke方法
if (this.label1.InvokeRequired)
{
this.Invoke(md1, listNum[0]);
}
else
{
label1.Text = listNum[0].ToString();
}
if (this.label2.InvokeRequired)
{
this.Invoke(md2, listNum[1]);
}
else
{
label2.Text = listNum[1].ToString();
}
if (this.label3.InvokeRequired)
{
this.Invoke(md3, listNum[2]);
}
else
{
label3.Text = listNum[2].ToString();
}
if (this.label4.InvokeRequired)
{
this.Invoke(md4, listNum[3]);
}
else
{
label4.Text = listNum[3].ToString();
}
if (this.label5.InvokeRequired)
{
this.Invoke(md5, listNum[4]);
}
else
{
label5.Text = listNum[4].ToString();
}
if (this.label6.InvokeRequired)
{
this.Invoke(md6, listNum[5]);
}
else
{
label6.Text = listNum[5].ToString();
}
//记录下当前的线程对象,以便于在点击停止按钮的时候终止此线程
nameThread = Thread.CurrentThread;
Thread.Sleep(300);
}
//id=Thread.CurrentThread.ManagedThreadId;

}

public void SetLable1(int n)
{
label1.Text = n.ToString();
}
public void SetLable2(int n)
{
label2.Text = n.ToString();
}
public void SetLable3(int n)
{
label3.Text = n.ToString();
}
public void SetLable4(int n)
{
label4.Text = n.ToString();
}
public void SetLable5(int n)
{
label5.Text = n.ToString();
}
public void SetLable6(int n)
{
label6.Text = n.ToString();
}
}

 

程序运行结果如下所示:

winform基于异步委托实现多线程摇奖器

希望本文所述对大家的C#程序设计有所帮助。