我正在使用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能在win7上运行吗?
我的应用程序是多线程的,Ifilter可以和多线程一起工作吗?我也尝试过使用STAThread,但得到了相同的异常。我还尝试在实例化Reader时设置锁,但没有锁。
发布于 2012-12-22 00:35:44
你不能多线程的IFilter,它是为单线程设计的。
使用IFilter资源管理器了解哪个IFilter是STA:http://www.citeknet.com/Products/IFilters/IFilterExplorer/tabid/62/Default.aspx
如果你想让你的应用程序为其他过滤器保持多线程,你可以使用的解决方案是旋转一个专用于STA IFilters的线程,并在应用程序的生命周期中保留它。然后,您总是在同一线程中处理需要STA的文档。
https://stackoverflow.com/questions/13985621
复制相似问题