Я думаю, вы можете удалить «GC.KeepAlive» из вашего ответа после разъяснения Джона Скита. :)
ентацияSystem.Threading.Timer
говорит, что я должен иметь реальную ссылку на него, чтобы избежать его сбора мусора. Но где мне это сделать? мойmain
очень просто, что я не знаю, где сохранить ссылку:
class Program {
static void Main() {
new System.Threading.Thread(myThreadStart).Start();
new System.Threading.Timer(myTimerCallback, new MyStateObject(), 0, 5000);
}
}
Я думал о сохранении ссылки вstatic
поле вProgram
класс, предполагая, чтоstatic
поля не собираются до конца заявки. Но я не уверен, что это лучший способ сделать это, поэтому буду признателен за ваш совет.