Ejemplo n.º 1
0
        public override Dictionary <AuditFileInfo, string> ReadFilesAsText(List <AuditFileInfo> files)
        {
            CallerInformation here = this.Here();
            Stopwatch         sw   = new Stopwatch();

            sw.Start();
            Dictionary <AuditFileInfo, string> results = new Dictionary <AuditFileInfo, string>(files.Count);
            object results_lock = new object();

            Parallel.ForEach(files, new ParallelOptions()
            {
                MaxDegreeOfParallelism = 20
            }, (_f, state) =>
            {
                LocalAuditFileInfo _lf = _f as LocalAuditFileInfo;
                string text            = _lf.ReadAsText();
                if (text != string.Empty)
                {
                    lock (results_lock)
                    {
                        results.Add(_f, text);
                    }
                }
            });
            sw.Stop();
            Info("Read text for {0} out of {1} files in {2} ms.", results.Count(r => r.Value.Length > 0), results.Count, sw.ElapsedMilliseconds);
            return(results);
        }