当前位置:编程学习 > C#/ASP.NET >>

C# 一个完整的定时器例子怎么写



C# 一个完整的定时器例子怎么写


不要界面 --------------------编程问答-------------------- 关于C#中timer类  在C#里关于定时器类就有3个   
1.定义在System.Windows.Forms里   
2.定义在System.Threading.Timer类里   
3.定义在System.Timers.Timer类里 
System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API  SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环,Console  Application(控制台应用程序)无法使用。   
  
System.Timers.Timer和System.Threading.Timer非常类似,它们是通过.NET  Thread  Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求。System.Timers.Timer还可以应用于WinForm,完全取代上面的Timer控件。它们的缺点是不支持直接的拖放,需要手工编码。
例: 
使用System.Timers.Timer类 
System.Timers.Timer t = new System.Timers.Timer(10000);//实例化Timer类,设置间隔时间为10000毫秒; 
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件; 
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true); 
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
public void theout(object source, System.Timers.ElapsedEventArgs e) 

MessageBox.Show("OK!"); 
}  
--------------------编程问答-------------------- 三种Timer --------------------编程问答-------------------- using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        int a, b,i;
        public Form1()
        {
            InitializeComponent();
            a = 0; b = 0; i = 60;
            textBox1.Text = a.ToString();
            textBox2.Text = b.ToString();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            textBox1.Text = a.ToString();
            textBox2.Text = b.ToString();
            if (a == 0 && b == 0)
            {
                timer1.Enabled = false;
                textBox1.ReadOnly = false;
                textBox2.ReadOnly = false;
                MessageBox.Show("Time Up!");
                return;
            }
            if (b == 0)
            {
                a = a-1;
            }
            if (a == 0 && b <= 3)
            {
                System.Media.SoundPlayer player=new System.Media.SoundPlayer();
                player.SoundLocation = "C:\\Windows\\Media\\Windows Error.wav";
               // player.SoundLocation = ".\\Windows Error.wav";
                player.Play();
            }
            if (i == 0)
                i = 60;
            b = --i;
           
        }

        private void OpenFileDialog(string p, string p_2)
        {
            throw new NotImplementedException();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            string str1 = textBox1.Text;
            string str2 = textBox2.Text;
            if (int.TryParse(str1, out a) == false)
            {
                MessageBox.Show("第一个数据不是合法的整数");
                return;
            }
            if (!int.TryParse(str2, out b))
            {
                MessageBox.Show("第二个数据不是合法的整数");
                return;
            }
            i = b;
            textBox1.ReadOnly = true;
            textBox2.ReadOnly = true;
            textBox1.BackColor = Color.FromArgb(255, 255, 255);
            textBox2.BackColor = Color.FromArgb(255, 255, 255);
            timer1.Enabled = true;
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            string text = textBox3.Text;
            string text1 = text.Substring(1);
            string text2 = text1 + text[0];
            textBox3.Text = text2;
        }

        private void timer3_Tick(object sender, EventArgs e)
        {
           // string s1 = DateTime.Now.ToString();
            string s = DateTime.Now.ToLongTimeString();
            textBox4.Text = s;
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked == false)
                this.TopMost = false;
            else
                this.TopMost = true;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
        }

        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox2.Checked)
            {
                textBox1.Text = "0";
                textBox2.Text = "0";
                timer1.Enabled = false;
            }
        }


    }
}
--------------------编程问答-------------------- 好多的!! --------------------编程问答--------------------
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            System.Threading.Thread t = new System.Threading.Thread(delegate()
            {
                while (true)
                {
                    System.Diagnostics.Debug.WriteLine(System.DateTime.Now.ToString());
                    System.Threading.Thread.Sleep(1000);
                }
            }
            );

            t.Start();
            t.Join();
        } 
--------------------编程问答-------------------- mark... --------------------编程问答-------------------- --------------------编程问答-------------------- LS几位写的很到位了~~~
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,