繁体   English   中英

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

[英]Unable to delete file locked by same process — weird!

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

问题是PHP脚本由于已锁定而无法删除其中一个源文件。 奇怪的是,锁定了该进程的进程本身就是本机,在本例中为Apache Web Server。

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

为确保您肯定摆脱了图像上的所有潜在锁定,可以将代码包装在using块中。

using(Bitmap myBitmap = new Bitmap())
{
  //use myBitmap in here
}

应用程序绝对可以锁定自身的文件。 例如:

using(FileStream fs = File.Open("somefile.txt", FileMode.Open))
{
    File.Delete("somefile.txt"); // Exception: File already in use.
}

您需要确保可以清除文件的所有打开的句柄,然后才能清理PHP文件。

作为最后的选择,您可以使用Unlocker实用程序(通过命令行)来解锁文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM