大家好,又见面了,我是你们的朋友全栈君。
用System.Timers类实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
Timer t = new Timer();
t.Elapsed += new ElapsedEventHandler(OnTimedEvent);
t.Interval = 1000;
t.Enabled = true;
Console.Read();
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Console.Clear();
Console.WriteLine(DateTime.Now);
}
}
}
运行效果:
用线程实现
TimerTest类:
class TimerTest
{
//线程名
string _ThreadName;
public string ThreadName
{
get { return _ThreadName; }
private set { _ThreadName = value; }
}
//时间间隔
int _TimeInterval;
public int TimeInterval
{
get { return _TimeInterval; }
set { _TimeInterval = value; }
}
//当前计时器是否启用 true:启用 false:不启用
bool _Enabled;
public bool Enabled
{
get { return _Enabled; }
set { _Enabled = value; }
}
//每隔一段时间需要运行的事件
public delegate void TickEventHandler();
public event TickEventHandler TickEvent;
/// <summary>
/// 建立一个定时器
/// </summary>
/// <param name="ThreadName">线程名</param>
/// <param name="TimeInterval">时间间隔</param>
public TimerTest(string ThreadName,int TimeInterval = int.MaxValue)
{
this.ThreadName = ThreadName;
this.TimeInterval = TimeInterval;
this.Enabled = false;
}
/// <summary>
/// 定期执行事件
/// </summary>
public void Run()
{
while (true)
{
//如果当前计时器并未启用,则每隔一段事件监测是否被启用
if (!this.Enabled)
{
Thread.Sleep(100);
continue;
}
//触发事件TickEvent
if (TickEvent != null)
{
TickEvent();
}
//休眠一定的事件,等待下一个循环
Thread.Sleep(TimeInterval % 100);
for (int temp = 0; temp < TimeInterval/100; temp++)
{
Thread.Sleep(100);
if (!this.Enabled)
{
break;
}
}
}
}
}
调用程序:
static void Main(string[] args)
{
TimerTest tt = new TimerTest("timer_test",1000);
tt.Enabled = true;
tt.TickEvent += TestHandler;
Thread timer = new Thread(tt.Run);
timer.Start();
Console.ReadKey();
}
static void TestHandler()
{
Console.WriteLine(DateTime.Now.ToLongTimeString());
}
运行效果:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/105680.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...