从访问冲突异常中恢复

时间:2013-04-16 16:17:56

标签: c# dll pinvoke unmanaged access-violation

我正在使用EZTwain(一个非托管dll)来处理一些PDF。我知道它只能读取它创建的PDF文件。不幸的是,在现实世界中,它遇到了由其他图书馆创建的PDF。这会导致它失败并抛出AccessViolationException。

这本身并不是一个大问题,因为我的C#应用​​程序正在继续。不幸的是,当它接下来到这个文件并尝试重新处理它时,它仍然被锁定。据推测,EZTwain仍在装载......处于我不知道的状态 - 但是已经被文件锁定了。

无论如何我可以强制DLL卸载,因此释放文件上的锁(P / Invoke调用或其他)?

如果我能做到这一点,那么我可以第二次跳过使用EZTwain。

干杯

[UPDATE]

我试过调用LoadLibrary,捕获访问冲突异常然后FreeLibrary,但我的文件仍然被锁定。

我已经使用Process Explorer进行了检查:DLL肯定正在卸载,但文件仍然被锁定...为什么会这样?

(看起来我将不得不使用app域或单独的Exe建议)

0 个答案:

没有答案
相关问题