Кажется, проблема в вашем while{}
цикле.
Я бы сделал что-то вроде этого:
words = new List<Word>();
Console.WriteLine("Please wait, compiling words list...");
TextReader tr = new StreamReader(DICT);
string line;
while((line = tr.ReadLine()) != null)
if(!string.IsNullOrEmpty(line.Trim()))
{
words.Add(new Word(line));
}
Console.WriteLine("List compiled with " + words.Count + " words.");
Я не проверял это, поэтому могут быть некоторые ошибки, но главное, что ваш while{}
цикл будет разрываться на первой пустой строке, а не просто отбрасывать ее. В этом примере это исправлено, и оно сломается только тогда, когда больше нет строк для чтения.