gpt4 book ai didi

c# - 在循环突然停止的特定路径中创建 (N) 个目录

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:43 26 4
gpt4 key购买 nike

我正在尝试在特定目录中创建 10,000 个文件夹。我有一个为每个文件夹创建随机名称的算法。

我遇到的问题是当我运行这段代码时,它停止创建大约 21 个目录。 MessageBox.Show() 是调试的,但是,它永远不会弹出。

this.WorkingDir 是一个字符串属性,如下所示。

"C:\\Users\\Reapism\\Desktop\\Yo\\"

        DirectoryInfo directoryInfo;
string dirName; // directory name
const int dirNameLength = 15;

for (int i = 0; i < 10000; i++) {
dirName = GetRandomString(dirNameLength); // generates "unique name"
try {
directoryInfo = Directory.CreateDirectory(this.WorkingDir + dirName);
} catch (Exception e) {
MessageBox.Show($"{i} {dirName} failed. {e.ToString()}");
}
}

// Inserting a breakpoint here yields 21 directories

DirectoryInfo d = new DirectoryInfo(this.WorkingDir);
DirectoryInfo[] directories = d.GetDirectories($"*");

foreach (DirectoryInfo dir in directories) {
try {
Directory.Delete(dir.FullName);
} catch (Exception e) {
throw new FileNotFoundException($"Error deleting the directory!" + e.ToString());
}
}

有趣的事情是,当我使用调试器并在创建目录时逐步执行 for 循环的每次迭代时,它比 21/strong> 目录,并且可能一直到 10k。这会让我相信在一定时间内创建目录是有限制的。

令人不安的是没有抛出异常,循环只是停止了。

这是否与 CPU 工作速度快于磁盘可以报告或写入新文件夹有关?如果是这样,我该如何解决这个问题?此函数是一个定时函数,不能使用例如 Thread.Sleep(50)

最佳答案

可能您的函数 GetRandomString 在实时执行时抛出异常。将其放入 try block 并检查。我尝试创建 10000 个名称为 1,2,3 ...10000 的文件夹,我已经创建了所有文件夹。

    for (int i = 0; i < 10000; ++i)
{
Directory.CreateDirectory(Path.Combine(WorkingDir, $"{i}"));
}

关于c# - 在循环突然停止的特定路径中创建 (N) 个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55331879/

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