问题
Using the code below, the timer only fires once. What am I missing?
public static List<string> Test = new List<string> { "TEST1", "TEST2" };
public static void Start()
{
var t = new System.Threading.Timer(o =>
{
foreach (var item in Test)
{
Console.WriteLine("Say hello!");
}
}, null, 0, 1250);
}
回答1:
The timer is being collected by the GC before it fires again.
You need to keep it alive by storing it in a field.
来源:https://stackoverflow.com/questions/8466475/system-threading-timer-only-fires-once