5

只是一些建议,我有 100.000+ xml 文件要处理并移动到另一个系统。

这个概念很简单,我有一个像这样的循环:

    public void ProcessFiles()
    {
        IEnumerable<FileInfo> orderedFiles = GetFilesOrdered();

        foreach (FileInfo file in orderedFiles)
        {
            ProcessFile(file);
        }
    }

我一直在阅读有关 Task Parallel 库的信息,但没有那么自信。不是很粘在线程上。似乎 TPL 为我包装了很多东西。

简单地说,它只是使用parallel.Foreach的一个例子吗?

任何样品或建议

4

2 回答 2

0

是的,它可能就像替换foreachParallel.ForEach.

您必须记住,多个线程现在将ProcessFile同时执行。

因此,如果您在该方法中写入任何共享状态,则必须使用同步构造来保护它。

如果您不熟悉多线程,那么您应该在这里阅读一本很棒的介绍性电子书:Albahari

于 2013-01-17T10:00:50.277 回答
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); 
        });
于 2013-01-17T10:07:47.500 回答