2012-12-21 32 views
0

我索引PDF文件中的应用程序,使用PDF IFilter的6.0,我得到以下异常:的Adobe PDF IFilter的在32位机

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时放置锁,但不锁。

回答

0

您不能多线程Adobe IFilter,它是专为单线程appartement设计的。

使用IFilter的浏览器知道哪些IFilter的是STA:http://www.citeknet.com/Products/IFilters/IFilterExplorer/tabid/62/Default.aspx

你可以使用,如果你想避免其他过滤器的应用程序的多线程解决方案,是旋转,你奉献一个线程STA IFilter和保持在应用程序的整个生命周期中。然后,您总是在同一个线程中处理需要STA的文档。