有没有办法知道在调用 TextReader.Read 或 TextReader.ReadToEnd 调用之前会挂起而不抛出异常?
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) 读取 block 并遇到同样的问题。
最佳答案
(您在代码中使用了 textreader,但该示例使用的是 EPocalips IFilter 模块。)
我认为这是 EPocalipse IFilter 中的错误。我不知道他们的代码是如何更新的,但我记得几年前我在使用 IFilters 和使用 EPocalipse 代码时有同样的效果。
您应该在调试器中运行它并分解代码以查看它卡在 EPocalipse 库中的什么位置。它很可能陷入循环。
[编辑] 我找到了旧的更新代码并将其放在 skydrive ( Epocalipse.IFilter.zip ) 上。看看它是否解决了您的问题。它可以检测无限 IFilter 解析循环,以及带有锁定单元格的 excel 文件。
关于c# - TextReader Read 和 ReadToEnd 挂起而没有抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1883915/