Nel tuo ciclo tu continui a leggere finche il metodo leggi non ti risponde picche, ma nel metodo stesso non hai inserito un controllo che verificasse il raggiungimento dell'EOF. Risultato ? Il programma continua a leggere fino a che non arriva alla fine, ma quando arriva alla fine invoca il metodo ParseInt su un argomento non valido, e ti da errore.
e come faccio allora a verificare il raggiungimento dell'EOF??