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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,利用多线程技术来创建一个简单的电子时钟,不能使用定时器,只能使用多线程技术来实现。

5 个回复

倒序浏览
不太明白,为什么要用多线程?

评分

参与人数 1技术分 +1 收起 理由
杨恩锋 + 1

查看全部评分

回复 使用道具 举报
李荣壮 发表于 2011-10-28 22:23
不太明白,为什么要用多线程?

你用定时器终究是在UI主线程里面,严格意义上用定时器的话会出现闪烁的感觉,而且利用多线程可以更加可以有效率低利用CPU资源。
回复 使用道具 举报
写好了,楼主自己慢慢看吧!只实现了时间的功能 暂停这些都未实现
  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.Windows.Forms;
  9. using System.IO;
  10. using System.Threading;

  11. namespace WindowsFormsApplication
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.             TextBox.CheckForIllegalCrossThreadCalls = false;
  19.         }

  20.         private void button1_Click(object sender, EventArgs e)
  21.         {
  22.             Thread tr = new Thread(AddTime);
  23.             tr.IsBackground = true;
  24.             tr.Start();
  25.         }

  26.         private void Form1_Load(object sender, EventArgs e)
  27.         {
  28.             DateTime dt = DateTime.Now;
  29.             textBox1.Text = dt.Hour.ToString();
  30.             textBox2.Text = dt.Minute.ToString();
  31.             textBox3.Text = dt.Second.ToString();
  32.         }

  33.         private void AddTime()
  34.         {
  35.             while (true)
  36.             {
  37.                 TimeSpan ts = new TimeSpan(0, 0, 1);
  38.                 textBox3.Text = (int.Parse(textBox3.Text) + 1).ToString();
  39.                 if (textBox3.Text == "60")
  40.                 {
  41.                     textBox2.Text = (int.Parse(textBox2.Text) + 1).ToString();
  42.                     if (textBox2.Text == "60")
  43.                     {
  44.                         textBox1.Text = (int.Parse(textBox1.Text) + 1).ToString();
  45.                         if (textBox1.Text == "24")
  46.                         {
  47.                             textBox1.Text = "0";
  48.                             textBox2.Text = "0";
  49.                             textBox3.Text = "0";
  50.                         }
  51.                     }
  52.                 }
  53.                 Thread.Sleep(ts);
  54.             }
  55.         }
  56.       
  57.     }
  58. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
杨恩锋 + 2

查看全部评分

回复 使用道具 举报
杨恩锋 发表于 2011-10-28 22:42
你用定时器终究是在UI主线程里面,严格意义上用定时器的话会出现闪烁的感觉,而且利用多线程可以更加可以 ...

楼主真的很厉害!
回复 使用道具 举报
黄朝辉 发表于 2011-10-29 09:08
写好了,楼主自己慢慢看吧!只实现了时间的功能 暂停这些都未实现

很强大!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马