我正在尝试在特定目录中创建 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 个目录,并且可能一直达到 10k。这会让我相信在一定时间内创建目录是有限制的。
令人不安的是没有抛出异常,循环只是停止了。
这是否与 CPU 的工作速度比磁盘报告或写入新文件夹的速度快有关?如果是这样,我该如何解决这个问题?此功能是定时功能,Thread.Sleep(50)
不能使用例如。