gpt4 book ai didi

.net - SSD 驱动器上奇怪的目录删除行为

转载 作者:行者123 更新时间:2023-12-03 10:28:39 25 4
gpt4 key购买 nike

目录 c:\test 里面有 50 个左右的文件,没有子目录。

    If IO.Directory.Exists("C:\test") Then
IO.Directory.Delete("C:\test", True)
End If

IO.Directory.CreateDirectory("C:\test")

驱动器 C 是 Intel 的 X25-M80 SSD 驱动器,操作系统是 Windows 7 64 位,支持 TRIM,Visual Studio 是 2008,目标框架为 3.5。执行上述代码时,CreateDirectory 会在没有(可见)异常的情况下中断代码执行。在很头疼之后,我发现在代码执行到达 CreateDirectory 时,Delete 还没有完成。如果我像这样修改我的代码:
    If IO.Directory.Exists("C:\test") Then
IO.Directory.Delete("C:\test", True)
End If
Threading.Thread.Sleep(2000)
IO.Directory.CreateDirectory("C:\test")

然后一切都按预期工作。

除了明显的WTF之外,我的问题是:
  • 无论驱动器是什么,IO.Directory.Delete 都不应该是阻塞函数调用
  • 由于启用了 TRIM 支持,SSD 是否在删除时“作弊”?
  • 最佳答案

    我以前遇到过这个问题,但这不是 SSD 驱动器特有的。你最好先移动然后删除:

    if(Directory.Exists(dirpath))
    {
    string temppath = dirpath + ".deleted";
    Directory.Move(dirpath, temppath);
    Directory.Delete(temppath, true);
    }
    Directory.Create(dirpath);

    处理它的另一种方法是循环直到完成:
    if(Directory.Exists(dirpath))
    {
    Directory.Delete(dirpath, true);
    int limit = 100;
    while(Directory.Exists(dirpath) && limit-- > 0)
    Thread.Sleep(0);
    }
    Directory.Create(dirpath);

    关于.net - SSD 驱动器上奇怪的目录删除行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6023141/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com