zoukankan      html  css  js  c++  java
  • 使用多线程制作双色球

    使用多线程操作

    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;
            }
        }
    }
  • 相关阅读:
    eclipse连接远程hadoop集群开发时0700问题解决方案
    螺旋线
    双曲抛物面
    双曲抛物面
    工业相机标定相关知识整理
    高科技 stuff
    高科技 stuff
    杜甫诗百首
    杜甫诗百首
    经典纪录片
  • 原文地址:https://www.cnblogs.com/xiaoyaohan/p/9729076.html
Copyright © 2011-2022 走看看