我为执行延迟任务编写了一个简单的辅助类:
public class TaskExecutor {
private static void Callback(object state) {
((Action)state)(); //Not always be called
}
public static void DelayExecute(int mSec, Action task) {
if (task != null) {
new Timer(Callback, task, mSec, Timeout.Infinite);
}
}
}
我这样用:
TaskExecutor.DelayExecute(10000, () => { Console.WriteLine("Haha..."); });
但是,计时器似乎并不是每次都能正常工作。这意味着有时它很好,有时它很糟糕。为什么?我怎样才能做到对不对?
答案 0 :(得分:1)
您必须拥有对您创建的Timer
对象的引用。否则它将由GC收集。