У меня есть приложение, которое обрабатывает данные из текстового файла - оно читает строку из файла, затем обрабатывает ее и затем помещает результат в другой файл.После обработки одной строки она обрабатывает следующую, пока весь файл не будет готов.Некоторые строки из файла очень трудоемки для обработки.Поэтому я решил поместить логику обработки в отдельный поток, и если обработка занимает больше 10 секунд.Я убиваю нить.Поэтому мой код выглядит так:
public class Handler
{
public void Handle(string row)
{
// Perform handling
}
}
public class Program
{
private static bool HandleRow(string row)
{
Task task = new Task(() => new Handler().Handle(row));
task.Start(); // updated
var waitResult = task.Wait(timeout); // timeout is 10 sec.
if(waitResult == false || task.IsFaulted)
return false;
return true;
}
public static void Main()
{
foreach(var row in GetRowsToHandle())
HandleRow(row);
}
}
, но почему-то при запуске программы у меня возникает исключение из памяти.Кажется, что память не освобождается должным образом.
Кто-нибудь знает, почему могут произойти утечки памяти?
ОБНОВЛЕНО
Я забыл включить task.Start()
в мой сниффер кода.Теперь я положил его туда