![](/img/trans.png)
[英]Cannot use File.Delete()_ to delete file locked to process on Win 7
[英]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.