C#平行。冻结
我有一个大量的文件列表,需要阅读,还检查了contant是否包含其他列表中的内容。这需要一些性能,所以我认为我可以通过平行的方向运行它。不知何故,它会不时卡住,我不能怪异。
Math.Max(2, Environment.ProcessorCount - 2);
Parallel.ForEach(allPrFiles, allPrFile =>
{
using (StreamReader sr = new StreamReader(allPrFile))
{
string line;
while ((line = sr.ReadLine()) != null)
{
line = sr.ReadLine(); // 2nd Line
if (areaDataCRCs.Contains(line))
{
Dbg.DebugTxt(allPrFile);
areaDataCRCs.Remove(line);
if (allPrFile.IndexOf(".prb") > -1)
{
if (!filesToMove.Contains(allPrFile))
if (!String.IsNullOrEmpty(allPrFile))
filesToMove.Add(allPrFile);
line = sr.ReadLine();
line = line.Replace("buildingfile", string.Empty);
line = line.Replace("dungeonblockfile", string.Empty);
line = line.Replace("\"", string.Empty);
line = line.Trim();
if (String.IsNullOrEmpty(line))
Dbg.DebugTxt("NO GR2 FILE FOUND - " + allPrFile);
else
{
if (!gr2Files.Contains(line))
if (!String.IsNullOrEmpty(line))
gr2Files.Add(line);
if (!filesToMove.Contains(line))
if (!String.IsNullOrEmpty(line))
filesToMove.Add(line);
#if DEBUG
Dbg.DebugTxt(line);
#endif
}
break;
}
}
}
});
我错过了什么吗?我是C#的新手,所以请不要努力:) 并且还忽略切割字符串的部分。那只是为了测试目的
i have a huge list of file which needed to be read and also checked if the contant contains somthing from another list. This takes a bit of performance so i thought i could run it with a parallel.foreach. Somehow it get stuck from time to time and i cant figuere it out.
Math.Max(2, Environment.ProcessorCount - 2);
Parallel.ForEach(allPrFiles, allPrFile =>
{
using (StreamReader sr = new StreamReader(allPrFile))
{
string line;
while ((line = sr.ReadLine()) != null)
{
line = sr.ReadLine(); // 2nd Line
if (areaDataCRCs.Contains(line))
{
Dbg.DebugTxt(allPrFile);
areaDataCRCs.Remove(line);
if (allPrFile.IndexOf(".prb") > -1)
{
if (!filesToMove.Contains(allPrFile))
if (!String.IsNullOrEmpty(allPrFile))
filesToMove.Add(allPrFile);
line = sr.ReadLine();
line = line.Replace("buildingfile", string.Empty);
line = line.Replace("dungeonblockfile", string.Empty);
line = line.Replace("\"", string.Empty);
line = line.Trim();
if (String.IsNullOrEmpty(line))
Dbg.DebugTxt("NO GR2 FILE FOUND - " + allPrFile);
else
{
if (!gr2Files.Contains(line))
if (!String.IsNullOrEmpty(line))
gr2Files.Add(line);
if (!filesToMove.Contains(line))
if (!String.IsNullOrEmpty(line))
filesToMove.Add(line);
#if DEBUG
Dbg.DebugTxt(line);
#endif
}
break;
}
}
}
});
Did I missed something? Im pretty new to C# so please dont be to hard :)
And also ignore the part of cutting the string. Thats just for test purpose
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论