我正在构建一个程序来搜索用户设置的文件夹(源文件夹)中的所有 .xml 并将所有这些文件复制到另一个文件夹(目标文件夹)。
我的程序能够从(源文件夹)中搜索所有子文件夹中的所有 XML,结果返回大约 5000 个放置在列表中的文件,该列表稍后由函数处理,但他只能处理 31 个文件,然后出现“没有响应”,调试器显示程序在执行中停留了很长时间。
这是我的代码:
按钮动作:
private void btnCopiarSalvar_Click(object sender, EventArgs e)
{
foreach (string name in listFileNames)
{
if (readXML(name ))
{
tbArquivo.Text = name ; //Feedback textbox, tell the current filename
}
}
pbStatus.Increment(50);
cbFinal.Checked = true; //Feedback checkBox, to tell user that the task is over.
}
函数 ReadXML
public bool readXML(string name)
{
//foreach (string nome in listaArquivos)
//{ //I tried to the foreach inside, but nothing Works.
try
{
string text = null;
string readBuffer = File.ReadAllText(name);
text = readBuffer.Aggregate(text, (current, b) => current + b);
var encoding = new ASCIIEncoding();
Byte[] textobytes = encoding.GetBytes(text);
if (!File.Exists(destino))
{
string destinoComNomeArquivo = destino + "\\" + Path.GetFileName(nome);
using (FileStream fs = File.Create(destinoComNomeArquivo))
{
foreach (byte textobyte in textobytes)
{
fs.WriteByte(textobyte);
pbProcess.PerformStep();
}
Console.WriteLine("Arquivo gravado " + Path.GetFileName(nome));
}
}
pbProcess.PerformStep();
}
catch (Exception e)
{
Console.WriteLine(e);
}
//}
return true;
}
错误:检测到 ContextSwitchDeadlock。
尝试过的解决方案:禁用托管调试助手。
禁用 MDA 后,程序仍然只能读取 31 个文件(5k)。