【发布时间】:2015-03-13 10:10:39
【问题描述】:
在控制台应用程序中,我有以下代码:
private static System.Timers.Timer TaskTimer;
static void Main(string[] args)
{
//run each minute
Func<double> getNextMinute = () => { return (DateTime.Now.RoundUp(TimeSpan.FromMinutes(1)) - DateTime.Now).TotalMilliseconds; };
TaskTimer = new System.Timers.Timer(getNextMinute());
TaskTimer.AutoReset = false;
TaskTimer.Elapsed += (sender, e) =>
{
TaskTimer.Interval = getNextMinute();
TaskTimerCallback();
};
TaskTimer.Start();
bool exit = false;
while (!exit)
{
exit = (command == "exit");
}
}
如果我检查计时器 GC 生成,它总是 0。
TaskTimerObject 是否有可能在滴答声之前被垃圾收集?
【问题讨论】:
-
是的,计时器有可能在滴答声之前收集垃圾。
-
我觉得可以用
GC.KeepAlive -
不,因为它是
static。
标签: c# garbage-collection