A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Doublekill 于 2014-3-23 21:28 编辑


怎么用多线程解,这个是用土方法搞出来的,不知道算不算达到要求。哪位朋友帮忙指点下,用多线程怎么搞

4 个回复

倒序浏览
如图我用了7个lable
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;

  11. namespace 摇奖机
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.         }
  19.         Thread th;
  20.         bool b = false;//控制调用方法的条件
  21.         private void button1_Click(object sender, EventArgs e)
  22.         {
  23.             if (button1.Text == "开始")//点击按钮后,如果是开始
  24.             {
  25.                 b = true;
  26.                 button1.Text = "暂停";
  27.                 th = new Thread(PlayGames);
  28.                 th.IsBackground = true;//后台线程
  29.                 th.Start();
  30.             }
  31.             else//如果是暂停
  32.             {
  33.                 b = false;
  34.                 button1.Text = "开始";
  35.             }
  36.         }
  37.         void PlayGames()
  38.         {
  39.             Random r = new Random();
  40.             while (b)
  41.             {
  42.                 label1.Text = r.Next(0, 10).ToString();
  43.                 label2.Text = r.Next(0, 10).ToString();
  44.                 label3.Text = r.Next(0, 10).ToString();
  45.                 label4.Text = r.Next(0, 10).ToString();
  46.                 label5.Text = r.Next(0, 10).ToString();
  47.                 label6.Text = r.Next(0, 10).ToString();
  48.                 label7.Text = r.Next(0, 10).ToString();
  49.             }
  50.         }

  51.         private void Form1_Load(object sender, EventArgs e)
  52.         {
  53.             Control.CheckForIllegalCrossThreadCalls = false;//关闭检查跨线程访问
  54.         }

  55.         private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  56.         {
  57.             if (th != null)
  58.             {
  59.                 th.Abort();//主窗体关闭后,关闭线程
  60.             }
  61.         }
  62.     }
  63. }
复制代码

1.png (89.7 KB, 下载次数: 11)

1.png
回复 使用道具 举报 1 0
cancle 发表于 2014-3-23 20:39
如图我用了7个lable

是不是还要继承Thread类什么的,有点蒙,要引用什么不
回复 使用道具 举报 1 0
Doublekill 发表于 2014-3-23 21:07
是不是还要继承Thread类什么的,有点蒙,要引用什么不

不用继承,这道题关键是用一个布尔值来控制随机数的开始与关闭。只是新建了一个后台线程来控制随机数。。
回复 使用道具 举报 1 0
cancle 发表于 2014-3-23 21:19
不用继承,这道题关键是用一个布尔值来控制随机数的开始与关闭。只是新建了一个后台线程来控制随机数。。 ...

原来如此.这就是线程啊.多谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马