using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ConsoleApp7
{
class Program
{
public delegate void MyDelegate();
static void Main(string[] args)
{
Timer timer = new Timer(TimerCallBack, null, 0, 2000);
Console.ReadKey();
//若没有下面这一句,在release模式下,定时器执行一次之后,
//垃圾回收机制会发现main函数中定时器对象没有被任何对象引用,
//会对其进行垃圾回收,定时器会因此而被触发停止。最终定时器方法会只执行一次。
//但是如何将下面的方法改成timer=null,仍然没有用。JIT编译器是一个优化编译器,将对象设置为null时,
//JIT会将在执行优化时,将timer=null这行代码整行删除。
timer.Dispose();
}
private static void TimerCallBack(object o)
{
#if MSHENG
Console.WriteLine("msheng In Timer " + DateTime.Now);
#else
Console.WriteLine("In Timer" + DateTime.Now);
#endif
GC.Collect();
}
}
}
c# 垃圾回收之定时器被提前回收
最新推荐文章于 2024-08-09 17:33:04 发布