一定要声明成全局变量以保持对Timer的引用,不要声明成业务内的局部变量,否则会被垃圾收集器回收!
using System;
using System.Threading;
using System.Threading.Tasks;
namespace ActionStudy
{
class Program
{
private System.Threading.Timer timer;
public static Action Print_Action;//声明事件
static void Main(string[] args)
{
//创建定时器,2000是延迟多少毫秒,10000是间隔时间
timer = new Timer(new TimerCallback(Execute), null, 2000, 10000);
//timer= new System.Threading.Timer(new TimerCallback(Print), this, 5000, 0);
//事件触发绑定的方法
Print_Action += Print;
Console.ReadKey();
}
/// <summary>
/// 创建回调触发方法
/// </summary>
/// <param name="o"></param>
public static void Execute(object o)
{
//Console.WriteLine("just run now");
Print_Action?.Invoke();
}
/// <summary>
/// 需要定时执行的方法
/// </summary>
public static void Print() {
Console.WriteLine("Action我是狗子 希望你幸福!"+DateTime.Now.ToString());
}
}
}
https://fish.lnote.top/