黑马程序员技术交流社区

标题: 利用多线程技术来创建一个简单的电子时钟 [打印本页]

作者: 杨恩锋    时间: 2011-10-28 17:20
标题: 利用多线程技术来创建一个简单的电子时钟
如题,利用多线程技术来创建一个简单的电子时钟,不能使用定时器,只能使用多线程技术来实现。
作者: 李荣壮    时间: 2011-10-28 22:23
不太明白,为什么要用多线程?
作者: 杨恩锋    时间: 2011-10-28 22:42
李荣壮 发表于 2011-10-28 22:23
不太明白,为什么要用多线程?

你用定时器终究是在UI主线程里面,严格意义上用定时器的话会出现闪烁的感觉,而且利用多线程可以更加可以有效率低利用CPU资源。
作者: 黄朝辉    时间: 2011-10-29 09:08
写好了,楼主自己慢慢看吧!只实现了时间的功能 暂停这些都未实现
  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. }
复制代码


作者: 10642491    时间: 2011-10-30 07:40
杨恩锋 发表于 2011-10-28 22:42
你用定时器终究是在UI主线程里面,严格意义上用定时器的话会出现闪烁的感觉,而且利用多线程可以更加可以 ...

楼主真的很厉害!
作者: 10642491    时间: 2011-10-30 07:40
黄朝辉 发表于 2011-10-29 09:08
写好了,楼主自己慢慢看吧!只实现了时间的功能 暂停这些都未实现

很强大!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2