Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如果过滤器在解决方案中安装不当?_C#_Visual Studio 2005_Ifilter - Fatal编程技术网

C#如果过滤器在解决方案中安装不当?

C#如果过滤器在解决方案中安装不当?,c#,visual-studio-2005,ifilter,C#,Visual Studio 2005,Ifilter,从哪里开始 我继承了一个应用程序,它使用EPocalipse.IFilter名称空间从以前的程序员(没有文档)那里搜索文件中的字符串。它有几个问题,第一个是VS项目缺少FilterReader.cs、FilterLoader.cs,我认为EPocalipse iFilter(基于我的研究)需要这些。第二个问题是,应用程序(在构建时)在运行时挂起ReadToEnd() 我在这里找到了这条线索: 这太棒了…除了没有发布解决方案外=( 由于我有这个问题和其他问题,我想我应该启动一个新的线程,因为我首

从哪里开始

我继承了一个应用程序,它使用EPocalipse.IFilter名称空间从以前的程序员(没有文档)那里搜索文件中的字符串。它有几个问题,第一个是VS项目缺少FilterReader.cs、FilterLoader.cs,我认为EPocalipse iFilter(基于我的研究)需要这些。第二个问题是,应用程序(在构建时)在运行时挂起ReadToEnd()

我在这里找到了这条线索:

这太棒了…除了没有发布解决方案外=( 由于我有这个问题和其他问题,我想我应该启动一个新的线程,因为我首先要确保IFilter安装正确。项目会生成,但仍然挂起某些文件(通常是MS Excel)

例如,如果我尝试在Visual Studio中“转到定义”以实例化FilterReader,它只会显示选项卡“FilterReader[from metadata]”。因此,我假设FilterReader.cs文件丢失(它也不在项目解决方案资源管理器中),这可能也是挂起问题的原因

非常感谢您的帮助


SK

有关该主题的详细信息,请参阅[CodeProject]

至于悬而未决的问题,不容易解决。基本上,有两种可能的解决方案:

  • 应用无限循环检查,就像你在线程中发现的那样。但是,一些极其复杂的文档可能仍然挂在IFilter内部,你对此无能为力(IFilter是COM组件,通常是封闭源代码)
  • 将提取设为两个线程:一个线程用于监视提取过程并在提取超时时停止文档提取,另一个线程用于执行实际提取。如果选择此路径,请记住,您可能会遇到访问冲突异常,因为Epocalype实施没有针对多线程访问的COM保护s到iFilter

  • 感谢链接,帮助我将解决方案恢复到原来的位置。至于挂起,我发现特定文件(例如启用宏)会导致挂起。因此我将代码从:using(EPocalipse.IFilter.FilterReader FilterReader=new EPocalipse.IFilter.FilterReader(file))更改为using(var reader=new FilterReader(file))我不得不使用“使用Eclipse.IndexingService.COMTypeDef;”和“使用Eclipse.IndexingService.models;”似乎Eclipse.IndexingService.COM确实存在与filter相同的问题,它工作得很好!