C# 防止对象被垃圾回收
在控制台应用程序中,我有以下代码:C# 防止对象被垃圾回收,c#,garbage-collection,C#,Garbage Collection,在控制台应用程序中,我有以下代码: private static System.Timers.Timer TaskTimer; static void Main(string[] args) { //run each minute Func<double> getNextMinute = () => { return (DateTime.Now.RoundUp(TimeSpan.FromMinutes(1)) - Date
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");
}
}
private static System.Timers.Timer TaskTimer;
静态void Main(字符串[]参数)
{
//每分钟跑一次
Func getNextMinute=()=>{return(DateTime.Now.RoundUp(TimeSpan.frommins(1))-DateTime.Now.totalmillizes;};
TaskTimer=newsystem.Timers.Timer(getNextMinute());
TaskTimer.AutoReset=false;
TaskTimer.Appead+=(发送方,e)=>
{
TaskTimer.Interval=getNextMinute();
TaskTimerCallback();
};
TaskTimer.Start();
bool exit=false;
当(!退出)
{
退出=(命令=“退出”);
}
}
如果我检查计时器GC生成,它总是0
TaskTimerObject是否有可能在滴答声之前被垃圾收集?否,GC不会收集TaskTimerObject
TaskTimer字段是一个指向TaskTimerObject的字段。是的,计时器有可能在滴答声之前被收集到垃圾。您可以使用
GC.KeepAlive
我认为不是,因为它是静态的
。