我正在使用EZTwain(一个非托管dll)来处理一些PDF。我知道它只能读取它创建的PDF文件。不幸的是,在现实世界中,它遇到了由其他图书馆创建的PDF。这会导致它失败并抛出AccessViolationException。
这本身并不是一个大问题,因为我的C#应用程序正在继续。不幸的是,当它接下来到这个文件并尝试重新处理它时,它仍然被锁定。据推测,EZTwain仍在装载......处于我不知道的状态 - 但是已经被文件锁定了。
无论如何我可以强制DLL卸载,因此释放文件上的锁(P / Invoke调用或其他)?
如果我能做到这一点,那么我可以第二次跳过使用EZTwain。
干杯
[UPDATE]
我试过调用LoadLibrary,捕获访问冲突异常然后FreeLibrary,但我的文件仍然被锁定。
我已经使用Process Explorer进行了检查:DLL肯定正在卸载,但文件仍然被锁定...为什么会这样?
(看起来我将不得不使用app域或单独的Exe建议)