我有一個控制檯應用程序,具有下列主要程序:定時器只能在調試模式下
static void Main(string[] args)
{
var timer = new System.Threading.Timer(
e =>
{
//some code here
},
null,
TimeSpan.Zero,
TimeSpan.FromMinutes(1));
var backupTimer = new System.Threading.Timer(
e =>
{
//some code here
},
null,
TimeSpan.Zero,
TimeSpan.FromHours(24));
Console.ReadLine();
}
的問題是,在調試模式下正常工作,並調用方法在右期兩個定時器,如果輸入的東西在控制檯程序結束工作(Console.ReadLine()是爲此),但是當我在釋放模式下運行程序兩個定時器只調用一次(第一次),然後編程只是等待,直到我輸入的東西。
如何解決這個問題,所以我可以編譯一個獨立的程序正常工作?
它看起來像定時器由GC抑制。 – frankie 2014-08-28 10:41:32
您需要保留對計時器的引用作爲字段。否則,GC會吃掉它。 – 2014-08-28 10:43:07
爲什麼它在調試模式下正常工作呢? – s1ddok 2014-08-28 10:45:24