无法删除由同一进程锁定的文件 - 很奇怪!

时间:2010-03-23 19:50:09

标签: c# php locking

我有一个用PHP编写的应用程序,它使用用C#编写的COM dll。 dll通过组合两个其他图像文件来创建图像文件。然后,PHP脚本接管执行删除两个源文件的管理任务,并重命名生成的组合文件。

问题是PHP脚本无法删除其中一个源文件,因为它已被锁定。奇怪的是,锁定它的进程本身就是Apache Web Server。

我已经尝试更改C#dll以在退出之前处理所有位图和图形对象,但锁仍然存在。我的问题是,我该怎么做才能让dll放手并释放文件锁。这非常令人沮丧。

4 个答案:

答案 0 :(得分:1)

答案 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实用程序(通过命令行)解锁文件。