我对FileSystem.DeleteFile方法有一个小问题。 所以我有一个创建html文件的软件,在生成文件之前,我使用FileSystem.DeleteFile方法将所有内容从输出目录移动到回收站。但是我发现当我的回收站有很多文件(之前大约有10,000个)时,这个DeleteFile方法创建了许多线程(最多480个),如截图所示,并且线程在此方法完成后保留。如果我再次运行,我会收到一个OutOfMemoryException(我有6GB的ram)。
然而,在我清空回收站之后,我的软件运行顺利,线程稳定在25左右,内存使用量不超过100 MB
我做了很多测试,我确信代码中没有非托管对象,我可以通过填充垃圾文件堆来重新创建问题。
更新
string[] files = Directory.GetFiles(txtPath.Text);
string[] folders = Directory.GetDirectories(txtPath.Text);
pb.Maximum = files.Length + folders.Length;
pb.Value = 0;
foreach (string file in files)
{
FileSystem.DeleteFile(file, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);
pb.Value += 1;
Application.DoEvents();
}
foreach (string folder in folders)
{
FileSystem.DeleteDirectory(folder, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);
pb.Value += 1;
Application.DoEvents();
}
MessageBox.Show("Done!");