当前位置:编程学习 > C#/ASP.NET >>

Parallel.ForEach 返回值 问题

请教大伙一个问题 :
有一个  字符串数组 ,分别是 相对应文件的完整位置。
  我想并行读取。
代码如下:

 var filesOfExisit = CheckFilesOfExist(files);
  Parallel.ForEach(filesOfExisit, (index) =>
                {
                    finalContent += ReadFile(index);
                });
但是  finalContent 返回的 怎么都是 第一个值呢 ?

如何 把这些 返回的结果 放在一个同一的变量中呢 


--------------------编程问答-------------------- 可能和遍历的数据源有关吧,你用了匿名类型,换一个试试呢,比如List<T>,纯属猜测。 --------------------编程问答-------------------- 简单了测试一下没问题啊。
  string lst="";
            List<string> lst= new List<string>();
            for (int i = 0; i <= 100; i++)
                lst.Add(i.ToString());
            Parallel.ForEach(lst, current =>
                {
                    lst+= current.ToString()+Environment.NewLine;
                    Console.WriteLine("Processing {0} on thread {1}", current,
                                    Thread.CurrentThread.ManagedThreadId);
                });
            Console.WriteLine(lst.ToString());
            Console.ReadLine();
--------------------编程问答--------------------

var filesOfExisit = CheckFilesOfExist(files);
var resultCollection = new ConcurrentBag<string>();
  Parallel.ForEach(filesOfExisit, (index) =>
                {
                    resultCollection.Add(ReadFile(index));
                });
--------------------编程问答-------------------- finalContent就是一个变量,最后肯定就是一个值,不会保存很多值,给你100个int,怎么可能保存在一个独立的int变量呢,该用数组或list保存
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,