C#定时器的用法

摘要:
关于C#中的计时器类C#中有三个计时器类。在System.Windows中定义。表单2.在System.Threading中定义。计时器类3。在System.Timers中定义。计时器类System.Windows。窗体计时器应用于WinForm,并通过Windows消息机制实现。它类似于VB或Delphi中的Timer控件

关于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控件。他们的缺点是不支持直接的拖放,需要手工编码。

1.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Timers;
using System.Collections;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

  

        private void Form1_Load(object sender, EventArgs e)
        {
           
              System.Timers.Timer aTimer = new System.Timers.Timer();  
              aTimer.Elapsed += new ElapsedEventHandler(theout);  //到达时间的时候执行事件;
             // 设置引发时间的时间间隔 此处设置为1秒(1000毫秒)
             aTimer.Interval = 1000;
             aTimer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
             aTimer.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件;
        }
        public void theout(object source, System.Timers.ElapsedEventArgs e)
        {
            ArrayList AutoTask = new ArrayList();
            AutoTask.Add("8:30:00");
            AutoTask.Add("9:30:00");
            AutoTask.Add("10:30:00");
            AutoTask.Add("11:34:15");


            for (int n = 0; n < 4; n++)
            {
                if (DateTime.Now.ToLongTimeString().Equals(AutoTask[n]))
                {
                    MessageBox.Show("现在时间是" + AutoTask[n]);
                }
            }


  
        }

2.

C#.net 定时器

最近需要用到一个定时器,设定当 程序 到某时刻 执行某段代码。

using System;

using System.Timers;

namespace 定时器ConsoleApplication1

{

class Class1

{ 

  [STAThread] 

  static void Main(string[] args)

  {

   System.Timers.Timer aTimer = new System.Timers.Timer();  

   aTimer.Elapsed += new ElapsedEventHandler(TimeEvent);  

   // 设置引发时间的时间间隔 此处设置为1秒(1000毫秒)

   aTimer.Interval = 1000;  

   aTimer.Enabled = true;  

   Console.WriteLine("按回车键结束程序";

   Console.WriteLine(" 等待程序的执行......";

   Console.ReadLine();

  }

  // 当时间发生的时候需要进行的逻辑处理等

  //    在这里仅仅是一种方式,可以实现这样的方式很多.

  private static void TimeEvent(object source, ElapsedEventArgs e)  

  {  

   // 得到 hour minute second  如果等于某个值就开始执行某个程序。

   int intHour   = DateTime.Now..Hour;

   int intMinute = DateTime.Now.Minute;

   int intSecond = DateTime.Now.Second;

   // 定制时间; 比如 在10:30 :00 的时候执行某个函数

   int iHour   = 10;

   int iMinute = 30;

   int iSecond = 00;

   // 设置  每秒钟的开始执行一次

   if( intSecond == iSecond )

   {

    Console.WriteLine("每秒钟的开始执行一次!";

   }

   // 设置 每个小时的30分钟开始执行

   if( intMinute == iMinute && intSecond == iSecond )

   {

    Console.WriteLine("每个小时的30分钟开始执行一次!";

   }

   

   // 设置 每天的10:30:00开始执行程序

   if( intHour == iHour && intMinute == iMinute  && intSecond == iSecond )

   {

    Console.WriteLine("在每天10点30分开始执行!";

   }

  }  

}

}  
    }
}

免责声明:文章转载自《C#定时器的用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇2015.7.30 第十五课 sql(新建数据库、创建表、注释、查询语句、新增、更新、删除、联合查询)如何在 CentOS 7 上安装 Python 3下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# 编写Windows Service(windows服务程序)(摘抄)

  C# 编写Windows Service(windows服务程序)   Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序。Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就能开始运行了,它必须有特定的启动方式。这些启动方式包括了自动启动和手动启动两...

转载-&amp;gt;C#异常处理

C#异常处理 异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。 异常提供了一种把程序控制权从某个部分转移到另一个部分的方式。C# 异常处理时建立在四个关键词之上的:try、catch、finally和throw。 try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 cat...

[工具]图片等比例压缩工具

写在前面 在网盘中有这样一个功能,需要获取所有图片的列表,想来想去,觉得还是生成相同比例的图片,在排版上更美观一些。所以就没事高了一个压缩的工具玩玩。 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Dat...

TCP 之 FIN_WAIT_2状态处理流程

概述 在主动关闭方发送了FIN之后,进入FIN_WAIT_1状态,在此状态收到了ACK,则进入FIN_WAIT_2状态,而FIN_WAIT_2后续要做的工作是等待接收对端发过来的FIN包,并且发送ACK,进而进入到TIME_WAIT状态;本文主要关注从FIN_WAIT_1进入FIN_WAIT_2状态,以及在FIN_WAIT_2状态来包或者定时器触发后的处理...

MAC OSX 驱动操作

mac ox系统的驱动安装常规操作:下载到 *.kext 的驱动以后,都可以直接把它拖到 /System/Library/Extensions/ 下替换掉原来的文件。替换了以后,还需要修复权限才能够正常使用。因为 Mac OS X 是基于 FreeBSD 的操作系统,因此 Unix 下对文件权限的依赖就被继承了下来了。大家在替换了 *,kext 文件以后,...

System.Web.Mvc 找到的程序集清单定义与程序集引用不匹配

System.IO.FileLoadException: 未能加载文件或程序集“System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)文...