我有一个用PHP编写的应用程序,它使用用C#编写的COM dll。 dll通过组合两个其他图像文件来创建图像文件。然后,PHP脚本接管执行删除两个源文件的管理任务,并重命名生成的组合文件。
问题是PHP脚本无法删除其中一个源文件,因为它已被锁定。奇怪的是,锁定它的进程本身就是Apache Web Server。
我已经尝试更改C#dll以在退出之前处理所有位图和图形对象,但锁仍然存在。我的问题是,我该怎么做才能让dll放手并释放文件锁。这非常令人沮丧。
答案 0 :(得分:1)
使用C#.net 删除已在使用的文件 http://markand-bhatt.blogspot.com/2011/02/delete-file-which-is-already-in-use.html
答案 1 :(得分:0)
为了确保您绝对摆脱了图像上的所有潜在锁定,您可以将代码包装在使用块中。
using(Bitmap myBitmap = new Bitmap())
{
//use myBitmap in here
}
答案 2 :(得分:0)
应用程序绝对可以锁定文件。例如:
using(FileStream fs = File.Open("somefile.txt", FileMode.Open))
{
File.Delete("somefile.txt"); // Exception: File already in use.
}
在PHP文件清理之前,您需要确保已关闭文件的所有打开句柄。
答案 3 :(得分:0)
作为最后的手段,您可以使用Unlocker实用程序(通过命令行)解锁文件。