public void BatchProcess(string inputDir, string outputDir) { DirectoryInfo folder = new DirectoryInfo(inputDir); int n = 0; int total = folder.GetFiles("*.arr").Length; int step = (int)Math.Ceiling((double)folder.GetFiles("*.arr").Length / 10000); Console.Write("进度 000.00%"); foreach (FileInfo f in folder.GetFiles("*.arr")) { FileInfo file = f;//防止在VS2010下报错 PrimalArrivalList pal = new PrimalArrivalList(); pal.ReadFromArrFile(file.FullName); Task ta = factory.StartNew(() => { SellingRecordList Srlist; ControlRecordList Crlist; Process(pal, out Srlist, out Crlist); //判断文件路径是否存在,不存在则创建文件夹 if (!System.IO.Directory.Exists(outputDir + @"\Sell")) { System.IO.Directory.CreateDirectory(outputDir + @"\Sell");//不存在就创建目录 } Srlist.WriteToFile(outputDir + @"\Sell\" + pal.PAListID + ".sr"); if (!System.IO.Directory.Exists(outputDir + @"\Control")) { System.IO.Directory.CreateDirectory(outputDir + @"\Control");//不存在就创建目录 } Crlist.WriteToFile(outputDir + @"\Control\" + pal.PAListID + ".cr"); if (n++ % step == 0) { lock (folder) { Console.SetCursorPosition(Console.CursorLeft - 7, Console.CursorTop); Console.Write("{0}%", String.Format("{0:000.00}", Math.Round(((double)n / (double)total), 4) * 100)); } } }, cts.Token); tasks.Add(ta); } Task.WaitAll(tasks.ToArray()); tasks.Clear(); Console.SetCursorPosition(Console.CursorLeft - 7, Console.CursorTop); Console.WriteLine("100.00 % 完成!"); }