只是一些建议 我有100.000+ xml文件要处理并移动到另一个系统。
这个概念非常简单我有一个循环:
public void ProcessFiles()
{
IEnumerable<FileInfo> orderedFiles = GetFilesOrdered();
foreach (FileInfo file in orderedFiles)
{
ProcessFile(file);
}
}
我一直在阅读有关任务并行库但没有那么自信。 不是那么强调线程。 似乎TPL包含了很多东西。
简单来说就是使用parallel.Foreach?
的情况任何样本或建议
答案 0 :(得分:0)
是的,它可能就像用foreach
替换Parallel.ForEach
一样简单。
您必须记住,多个线程现在将同时执行ProcessFile
。
因此,如果您要写入该方法中的任何共享状态,则必须使用同步构造来保护它。
如果您不熟悉多线程,那么您应该在这里阅读一本很棒的介绍性电子书:Albahari
答案 1 :(得分:0)
希望它对你有所帮助。简单的片段演示了如何并行移动文件。
List<FileInfo> files = new List<FileInfo>();
files.Add(new FileInfo("F:\\1.xml"));
files.Add(new FileInfo("F:\\2.xml"));
files.Add(new FileInfo("F:\\3.xml"));
Parallel.ForEach(files, f =>
{
f.MoveTo("d:\\test\\" + f.Name);
});