Я думаю, вы можете удалить «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 поля не собираются до конца заявки. Но я не уверен, что это лучший способ сделать это, поэтому буду признателен за ваш совет.

Ответы на вопрос(1)

Ваш ответ на вопрос