目录删除MFC的问题

Problems with directory deletion MFC

我正在做一个 mfc 程序,我在其中使用

创建了一个目录来存储 dicom 图像
 CreateDirectory(Directory_name,NULL);

并成功创建文件夹, 之后我用这个文件夹里的dicom图片做了体渲染,效果也不错

在那之后,当我尝试删除包含 dicom 文件的目录时,除我已提供给体积渲染过程的文件夹的最后一个 dicom 文件外,所有内容都被删除。 这是什么概念? 我该如何删除它?

在 Windows 下,您无法删除打开的文件。

如果您直接使用 Windows 函数,特别是使用 CreateFile 打开文件,您可以传递 FILE_FLAG_DELETE_ON_CLOSE 以(显然足够)尽快删除每个文件因为它已关闭。

如果(更有可能)您使用几乎任何其他方式打开文件(iostreams、FILE *s、CFile 等),您几乎坚持这样一个事实,即您需要先关闭文件才能删除它们。如果文件在 child 进程中打开,您通常需要等待该进程完成并关闭文件,然后再尝试删除文件。

同样,您的选择在某种程度上取决于您如何创建 child 流程。如果您直接调用 CreateProcess,您将获得 child 进程的句柄。当 child 进程退出时,该句柄将发出信号,因此您可以在句柄上执行类似 WaitForSingleObject 的操作,当它 returns 成功时,您知道 child 进程已经退出。大多数其他生成 child 的方法至少需要稍微多一些迂回的方法(而且,就像打开文件一样,使用其他方法比直接调用 CreateProcess 更常见——可以理解,因为使用CreateProcess 直接会有点痛)。