У меня есть служба, которая периодически проверяет папку для файла и затем обрабатывает ее. (Читает, извлекает данные, сохраняет их в sql)
Итак, я запустил его на тестовом поле, и потребовалось немного больше времени, чем ожидалось. Файл имел 1,6 миллиона строк, и он продолжал работать через 6 часов (затем я пошел домой).
Проблема в том, что ящик, на котором он работает, теперь абсолютно искалечен - удаленный рабочий стол выходил из строя, поэтому я даже не могу его остановить, чтобы остановить процесс, или приложить отладчик, чтобы увидеть, как далеко продвигается и т.д. Он прочно использует 90% + процессор, и все другие запущенные сервисы или приложения страдают.
Код (из памяти не может компилироваться):
List<ItemDTO> items = new List<ItemDTO>();
using (StreamReader sr = fileInfo.OpenText())
{
while (!sr.EndOfFile)
{
string line = sr.ReadLine()
try {
string s = line.Substring(0,8);
double y = Double.Parse(line.Substring(8,7));
//If the item isnt already in the collection, add it.
if (items.Find(delegate(ItemDTO i) { return (i.Item == s); }) == null)
items.Add(new ItemDTO(s,y));
}
catch { /*Crash*/ }
}
return items;
}
- Поэтому я работаю над улучшением кода (любые подсказки оценены).
Но это все еще может быть медленным делом, и это нормально, я не имею никаких проблем с этим, занимая много времени, пока он не убивает мой сервер.
Так что я хочу от вас прекрасных людей: 1) Является ли мой код ужасно не оптимизированным? 2) Могу ли я ограничить объем процессора, который может использовать мой кодовый блок?
Приветствует всех