0

我正在PDF使用 PDF IFilter 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) 

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

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

4

1 回答 1

0

您不能多线程 Adob​​e IFilter,它是为单线程公寓设计的。

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

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

于 2012-12-21T16:35:44.220 回答