使用多线程制作双色球
Posted xiaoyaohan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用多线程制作双色球相关的知识,希望对你有一定的参考价值。
使用多线程操作
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace 用多线程实现双色球 { public partial class MainFrm : Form { private List<Label> lblist = new List<Label>();//写一个集合存储lb控件 public MainFrm() { InitializeComponent(); // Control.CheckForIllegalCrossThreadCalls = false;//捕获对错误线程的调用设置为false,真正项目中不要使用这种方法 } bool isRuning = false; private void MainFrm_Load(object sender, EventArgs e) { //循环加载6个label标签 for (int i = 0; i < 6; i++) { Label lb = new Label(); lb.Text = "0"; lb.AutoSize = true; lb.Location = new Point(50 * i + 50, 100); this.Controls.Add(lb);//将所有lb控件显示在窗体上 //写一个集合存放lb控件 lblist.Add(lb); } } private void btnStart_Click(object sender, EventArgs e) { isRuning = true; Thread thread = new Thread(() => { Random r = new Random(); //不停改变lb的值 while (isRuning) { foreach (var item in lblist) { string str = r.Next(0, 10).ToString(); if (item.InvokeRequired)//多线程操作 { //该属性为true,说明调用了外部线程 item.Invoke(new Action<string>(s => { item.Text = s; }), str); } else { item.Text = str; } } Thread.Sleep(200);//数字改变的太快了,因此让他200毫秒改变一次 } }); thread.IsBackground = true;//设置为后台线程 thread.Start(); } private void btnStope_Click(object sender, EventArgs e) { isRuning = false; } } }
以上是关于使用多线程制作双色球的主要内容,如果未能解决你的问题,请参考以下文章