2010-11-12 108 views
0

这是我的问题:我刚刚完成了一个应用程序,它允许您右键单击资源管理器中的文件,并打开一个选项以打开该应用程序。然后重命名并将该文件移出文件夹到特定位置,然后删除该文件夹(空或不)。这工作罚款当文件通过GUI加载时,但是资源管理器上下文菜单的整个点是GUI永不加载,它只是一个单一文件的奇迹。不会让我删除一个文件夹,我刚刚移出一个文件?

但是,使用上下文菜单时,文件夹不会删除,并且会引发异常,说明该文件夹正在被另一个进程使用。该文件仍然被移动,所有其他文件仍然被删除。这是为什么发生?有什么方法可以明确地释放目录中的句柄以使其工作?

我会告诉你的代码,但它是非常基本的(即一行,Dir​​ectory.Delete)。我也尝试使用DirectoryInfo.Delete,但没有帮助。就像我说的,它在GUI内工作正常。

回答

0

我想最近发生的事情是资源管理器试图删除该文件夹,而该文件正在被复制或移动。你需要做的是创建一个独立的线程来移动或复制文件(或文件),然后当该线程完成时,删除该文件夹。

1

我正确地认为,从GUI中删除意味着该文件夹当前未在资源管理器中打开,而当您使用上下文菜单删除文件夹(显然)是否打开?如果是这样,this blog可能会对问题有所了解。另外,这里是another SO question,它询问如何关闭资源管理器窗口。可能有帮助。

“Windows NT系列操作系统保持打开进程当前目录的句柄。”

+0

谢谢尼克 - 我的问题是简单地通过使用Directory.SetCurrentDirectory(AnywhereOtherThanHere)100%解决:-) – 2010-11-12 02:38:07

相关问题