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

jim*_*mmy 9 c# windows

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

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

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

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

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

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

jim*_*mmy 2

根据 @DWright 的要求,我将回答我自己的问题,因为没有其他人这样做,出于文档目的以及为了清楚其他人是否找到这篇文章。

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

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