Я создаю программу, которая будет проверять список каталогов каждые 2 секунды. Я ожидаю, что эта программа будет работать в течение нескольких месяцев без утечки памяти или для каких-либо человеческих взаимодействий.C# Таймер и утечка памяти
Внизу программа имеет утечку памяти.
Я все еще не уверен, что представляет собой 10K. Это не интервал. Интервал равен 2k.
class Program
{
static void Main(string[] args)
{
Timer aTimer = new Timer(10000);
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 2000;
aTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program.");
Console.ReadLine();
GC.KeepAlive(aTimer);
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
string[] DirList = Directory.GetFiles(@"C:\TTImer");
if (DirList.Length > 0)
{
foreach (string s in DirList)
{
//do something
}
}
}
}
C# сборщик мусора, как именно у вас есть утечка памяти? – evanmcdonnal
Итак: 1. Где доказательство имеет утечку памяти. 2. Что «что-то делать», потому что утечка почти наверняка будет там. –
каждые 2 секунды или около того увеличивается использование памяти –