Directory.Exists保持目录句柄几秒钟

时间:2015-03-23 17:07:00

标签: c# windows

所以我正在尝试对我的代码负责共享目录的单元测试/集成测试。

所以我创建了我的共享驱动器,然后检查目录是否存在。首先在本地,然后通过它的共享名称。

Assert.IsTrue(Directory.Exists(testSharePath));
Assert.IsTrue(Directory.Exists(
    String.Format(@"\\{0}\{0}", System.Environment:MachineName, testShareName));

在此之后,我当然希望通过删除我刚刚创建的目录来清理自己。但是这不起作用,因为" ......它被另一个进程使用。"

经过一些实验,我发现如果我删除第二个Assert,它会再次起作用。难道我做错了什么? 哦,我也注意到如果我在删除目录之前在那里放了30秒的睡眠它也可以。跆拳道?

编辑:我刚刚重新审视了这个问题并试图在评论中建议首先明确地取消共享文件夹。就是这样。工作就像一个魅力。

1 个答案:

答案 0 :(得分:2)

根据@DWright的要求,我会回答我自己的问题,因为没有其他人这样做,出于文档目的,并且为了清楚,如果其他人发现这篇文章。

我的问题通过在删除之前显式取消共享文件夹来解决:

var share = String.Format("Win32_Share.Name='{0}'", shareName);
var managementObj = new ManagementObject(share);
managementObj.InvokeMethod("Delete", null, null);