Adobe PDF过滤器在32位机器

本文关键字:32位 机器 过滤器 PDF Adobe | 更新日期: 2023-09-27 17:49:01

我在一个应用程序中索引PDF文件,使用PDF过滤器6.0,我得到以下例外:

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) 

我使用的是win7 32位机器。PDF过滤器在win7上工作吗?

我的应用程序是多线程的,过滤器与多线程工作吗?我也尝试使用STAThread,但得到了同样的例外。还尝试在实例化Reader时设置锁,但没有锁定。

Adobe PDF过滤器在32位机器

你不能多线程的Adobe过滤器,它是为单线程公寓设计的。

使用过滤器资源管理器来了解哪个过滤器是STA: http://www.citeknet.com/Products/IFilters/IFilterExplorer/tabid/62/Default.aspx

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