簡體   English   中英

使用ParallelForeach處理文件。 這是最好的方法嗎?

[英]Processing Files using ParallelForeach. Is this the best approach

只是一些建議我有100.000+ xml文件來處理和移動到另一個系統。

這個概念非常簡單我有一個循環:

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

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

我一直在閱讀有關任務並行庫但沒有那么自信。 不是那么強調線程。 似乎TPL為我包裝很多。

簡單來說就是使用parallel.Foreach的情況呢?

任何樣品或建議

是的,它可能就像用Parallel.ForEach替換foreach一樣簡單。

您必須記住,多個線程現在將同時執行ProcessFile

因此,如果您要寫入該方法中的任何共享狀態,則必須使用同步構造來保護它。

如果您不Albahari多線程,那么您應該閱讀一本很棒的入門電子書: Albahari

希望它對你有所幫助。 簡單的代碼片段,演示如何並行移動文件。

        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); 
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM