TextReader Read и ReadToEnd зависают без создания исключения
Вопрос
Есть ли способ узнать, что вызов TextReader.Вызов Read или TextReader.ReadToEnd зависнет без вызова exeption до того, как я выполню вызов?
try
{
using (var filterReader = new EPocalipse.IFilter.FilterReader(tempFileName))
{
mediaContent = filterReader.ReadToEnd();
}
}
catch (Exception e)
{
Log.Error("DealerPortalIndex Error on file: " + tempFileName, e, this);
mediaContent = string.Empty;
}
FilterReader.ReadToEnd() зависает и никогда не выдает исключение для определенного файла .xls (возможно, для большего количества файлов)
Я также пробовал использовать FilterReader.Read(char{}, int, int) для чтения блока и получаю ту же проблему.
Решение
(В вашем коде указано textreader, но в примере используется модуль EPocalips IFilter.)
Я думаю, что это ошибка в EPocalipse IFilter.Я не знаю, насколько обновлен их код, но я вспоминаю нечто похожее несколько лет назад, когда я работал с IFilters и использовал код EPocalipse.
Вы должны запустить его в отладчике и разбить код, чтобы увидеть, где в библиотеке EPocalipse он висит.Скорее всего, он застрял в петле.
[Редактировать] Я нашел свой старый обновленный код и разместил его на skydrive (Эпокалипсис.IFilter.zip).Посмотрите, решит ли это ваши проблемы.Он распознает бесконечные циклы синтаксического анализа IFilter и файлы Excel с заблокированными ячейками.