C#IFilter在解决方案中安装不正确?

问题描述:

从哪里开始....C#IFilter在解决方案中安装不正确?

我继承,搜索从以前的编程文件中的字符串(即没有documenation)一个应用程序使用它的命名空间EPocalipse.IFilter。它有几个问题,其中第一个是VS Project缺少FilterReader.cs,FilterLoader.cs,以及其他我认为是EPocalipse IFilters(基于我的研究)所必需的。第二个是应用程序(当构建时)在运行时挂在ReadToEnd()上。

我发现这个线程在这里: TextReader Read and ReadToEnd hangs without throwing exception

这是真棒......除了没有发布溶液给出=( 因为我有这个问题和其他人,我想我会开始一个新的线程,因为我首先要确保IFilter的安装正确,但是项目仍然存在,但仍然挂在某些文件上(通常是MS Excel)

例如,如果我尝试在Visual Studio中为“我的定义”实例化FilterReader,它只是简单地显示了标签“FilterReader [from metadata]”。所以我假设FilterReader.cs文件只是缺失(它在项目解决方案中无处可用探险家),这也可能是悬挂问题的原因?

任何帮助,非常感谢。

SK

有关主题的详细信息,看看this article [CodeProject上]

至于挂的问题,它不能被轻易解决。基本上,有两种可能的解决方案:

  1. 应用无限循环检查,就像您找到的线程中的检查。但是,一些非常复杂的文档可能仍然挂在IFilter内部,并且您无能为力(IFilters是COM组件,通常是封闭源代码)。
  2. 使您的提取成为双线程:一个线程监视提取过程并在超时时停止文档提取,另一个线程执行实际提取。如果您选择此路径,请记住,您可能会遇到访问冲突异常,因为EPocalypse实施没有针对多线程访问ifilters的COM保护。
+0

感谢您的链接,帮助我找回解决方案。至于悬挂,我发现特定的文件(例如启用宏)会导致它挂起。所以我改变了代码:using(EPocalipse.IFilter.FilterReader filterReader = new EPocalipse.IFilter.FilterReader(file))to using(var reader = new FilterReader(file))我不得不使用“using Eclipse.IndexingService.COMTypeDef; “和“使用Eclipse.IndexingService.models;”看起来,Eclipse.IndexingService COM确实有和Ifilter一样的问题,它的工作很棒! – scryptKiddy 2010-12-16 18:36:44