У меня запущена служба, которая периодически проверяет папку на наличие файла и затем обрабатывает его. (Читает, извлекает данные, сохраняет их в 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) Могу ли я ограничить количество процессора, которое может использовать мой блок кода?
Ура всем