我使用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时放锁,但没有锁定。
答案 0 :(得分:0)
你不能多线程Adobe IFilter,它是专为单线程公寓设计的。
使用IFilter Explorer了解哪个IFilter是STA:http://www.citeknet.com/Products/IFilters/IFilterExplorer/tabid/62/Default.aspx
您可以使用的解决方案,如果您希望将应用程序保持多线程以用于其他过滤器,则可以旋转专用于STA IFilter的线程,并在应用程序的生命周期内保留它。然后,您始终在同一个线程中处理需要STA的文档。