如何删除另一个进程已打开的文件夹?
问题描述:
我创建了两个服务。我想删除一个文件夹,但该文件夹由我的第一个服务使用。当我执行第一个服务后,我执行第二个服务,它工作正常。但是,当我尝试同时执行这两项服务时,它无法正常工作。如何删除另一个进程已打开的文件夹?
答
实际上,问题应该是“应用程序中的内容可能会阻止文件夹被其他应用程序删除”。
可能性是:
你的服务打开某些文件,该文件夹中,并没有将其关闭。检查您在服务中打开的所有文件,并关闭该文件夹中的文件。
文件如何关闭取决于它们是如何打开的。如果你使用CreateFile(),那么用CloseHandle()关闭。如果是TFileStream,那么只需销毁它。您的服务将该文件夹设置为当前目录。使用SetCurrentDir选择其他目录作为当前目录。
答
除非您可以通过发送消息来停止使用文件夹(或其内容),否则在删除它之前您无法删除它。
答
如果第二项服务在第二项服务之前启动,那么您可以删除文件夹,但如果两项服务一起启动,则无法删除文件夹。
唯一的区别是您允许第一个服务完成与文件夹一起工作的时间。
需要考虑的事情:
如果你的第一个服务使用的文件夹,那么你将不能够像已经提到的,直到你的服务关闭与该文件夹的连接将其删除。
(-1)请问一个正确的问题,目前无法找出你想要做的事情。另外,我会冒昧减少问题中问号的数量:) – 2010-10-25 11:58:26
@Pekka:也许问号是问题主题的一部分? (种文件系统占位符)。 ;-) – splash 2010-10-25 12:02:03
@splash ahaha,谁知道! :) – 2010-10-25 12:02:25