0

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ましたが、同じ例外がありました。また、リーダーのインスタンス化中にロックを設定しようとしましたが、ロックはありませんでした。

4

1 に答える 1

0

Adobe 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 に答える