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

foreachはい、に置き換えるのと同じくらい簡単かもしれませんParallel.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 に答える