32位机器中的Adobe PDF IFilter

时间:2012-12-21 06:55:51

标签: c# ifilter

我使用PDF IFilter 6.0在应用程序中索引PDF文件,我收到以下异常:

System.AccessViolationException: 
Attempted to read or write protected memory. 
This is often an indication that other memory is corrupt.    

at EPocalipse.IFilter.IFilter.Init(IFILTER_INIT grfFlags, Int32 cAttributes, IntPtr aAttributes, IFILTER_FLAGS& pdwFlags)    
at EPocalipse.IFilter.FilterLoader.LoadAndInitIFilter(String fileName, String extension)
at EPocalipse.IFilter.FilterLoader.LoadAndInitIFilter(String fileName)    
at EPocalipse.IFilter.FilterReader..ctor(String fileName) 

我正在使用Win 7 32位机器。 PDF IFilter是否适用于Win 7?

我的应用程序是多线程的,Ifilter是否适用于多线程?我也尝试使用STAThread,但得到了同样的例外。还尝试在实例化Reader时放锁,但没有锁定。

1 个答案:

答案 0 :(得分:0)

你不能多线程Adobe IFilter,它是专为单线程公寓设计的。

使用IFilter Explorer了解哪个IFilter是STA:http://www.citeknet.com/Products/IFilters/IFilterExplorer/tabid/62/Default.aspx

您可以使用的解决方案,如果您希望将应用程序保持多线程以用于其他过滤器,则可以旋转专用于STA IFilter的线程,并在应用程序的生命周期内保留它。然后,您始终在同一个线程中处理需要STA的文档。