Кажется странным, если он висит даже после закрытия / удаления. Используете ли вы FileStream вместе с StreamReader? Обычно я использую FileStream для управления доступом к файлу и подачи его в StreamReader, а именно:
FileStream fsIn = new FileStream("path",FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader srIn = new StreamReader(fsIn, System.Text.Encoding.Default);
//...do stuff....
srIn.close();
srIn.Dispose();
fsIn.close();
fsIn.Dispose();
Еще лучше, если вы ограничиваете использование вашего StreamReader одним методом, добавьте Close / Dispose в Окончание.