C# 控制台程序下,如何启用Timer 及多次调用后如何更改周期
来源:互联网 发布:it服装店 编辑:程序博客网 时间:2024/06/08 02:52
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Threading;
- namespace ConsoleApplication1
- {
- class CStatusChecker
- {
-
- private int m_nInvoikeCount = 0;
-
- private int m_nMaxCount;
- public int MaxCount
- {
- get{return m_nMaxCount;}
- }
- public CStatusChecker(int count)
- {
- m_nMaxCount = count;
- }
-
- public void CheckStatus(object stateInfo)
- {
- AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
- Console.WriteLine("{0} 检查正在在进行 第{1}次.", DateTime.Now.ToString("HH:mm:ss.fff"), m_nInvoikeCount.ToString());
- m_nInvoikeCount++;
-
- if (m_nInvoikeCount == m_nMaxCount)
- {
- m_nMaxCount = 0;
-
- autoEvent.Set();
- }
- }
- }
- class Program
- {
-
-
- static void Main(string[] args)
- {
-
- AutoResetEvent autoEvent = new AutoResetEvent(false);
-
- CStatusChecker objChecker = new CStatusChecker(50);
-
- TimerCallback objCallback = new TimerCallback(objChecker.CheckStatus);
-
- Console.WriteLine("{0} 检查工作开始,共{1}次.", DateTime.Now.ToString("HH:mm:ss:fff"), objChecker.MaxCount);
-
- Timer objTimer = new Timer(objCallback, autoEvent, 1000, 2000);
-
- autoEvent.WaitOne(10000, false);
-
- objTimer.Change(0, 100);
- autoEvent.WaitOne(30000, false);
-
- objTimer.Dispose();
- Console.WriteLine("{0} 检查工作结束.", DateTime.Now.ToString("HH:mm:ss:fff"));
- Console.Read();
-
- }
-
- }
- }