我有一个第三方组件复制图像并为某个任务打开它,但它似乎没有释放文件句柄。
我已经阅读了该组件的文档,但它像2004年一样发布,并且有一种方法可以释放句柄,但当然它需要一个(int bmpPtr)。 所以它显然是一个指针。 所以问题是:有没有办法检索某个文件上的打开句柄......如果有人知道,有没有办法知道开放过程的身份是什么?
问题在于C#而不是C ++。我会优先选择没有DLLImport的解决方案,但我不认为这是可行的。 干杯
答案 0 :(得分:1)
从组件下面关闭文件句柄可能不是最好的主意,我不知道它可以通过C#完成。但是,您应该在正在使用的组件上查找Dispose
方法。通常,Dispose
用于清理非托管资源,例如文件句柄。
答案 1 :(得分:1)
我不确定这是否适用,但仅适用于记录:如果您使用Image.FromFile加载位图,则文件将一直处于打开状态。
答案 2 :(得分:0)
如果它有一个需要bmpPtr的方法,那么有一个返回bmpPtr的方法。找出你在哪里调用它,保存bmpPtr,然后再使用它来发布。