C# 平行。用于错误

C# 平行。用于错误,c#,datetime,task-parallel-library,parallel.foreach,C#,Datetime,Task Parallel Library,Parallel.foreach,我正在尝试将日期时间缩短为一个平行时间。对于: 守则的一部分: public void LoadLogFile(String fileName) { //Thread.CurrentThread.Priority = ThreadPriority.Lowest; String currentFile = ""; if (fileName.Contains("Compass")) { currentFile

我正在尝试将日期时间缩短为一个平行时间。对于:

守则的一部分:

        public void LoadLogFile(String fileName) {
        //Thread.CurrentThread.Priority = ThreadPriority.Lowest;

        String currentFile = "";
        if (fileName.Contains("Compass")) {
            currentFile = "Compass";
            CompassLogLoadCompleted = false;
            compassLogCollection.Clear();
            compassLogCollection.AsParallel();
        } else if (fileName.Contains("")) {
            currentFile = "CoreService";
            CoreServiceLogLoadCompleted = false;
            coreServiceLogCollection.Clear();
            ;
            compassLogCollection.AsParallel();
        } else {
            Console.Out.WriteLine("Wrong File");
        }

        if (fileName.Contains("CoreService") ||
            fileName.Contains("Compass")) {
            int numberOfSingleLineLog = 0;
            int numberOfmultipleLineLog = 0;
            String[] lines = new string[] {};

            String temp = "";
            string[] parts;
            DateTime dateTime = new DateTime();
            LoggingLvl loggingLvl = new LoggingLvl();
            LoggingLvl.ELoggingLvl eLoggingLvl = new LoggingLvl.ELoggingLvl();
            int id = 0;
            char[] delimiters = new[] {' '};
            string threadId = "";
            string loggingMessage;
            string loggingMessage2 = "";
            //string dateAndTimestamp = "";
            int ff = 0;

            // Read the File and add it to lines string
            try {
                swCompass.Start();
                lines = File.ReadAllLines(fileName);
                swCompass.Stop();
            } catch (Exception e) {
                CompassLogLoadCompleted = true;
                CoreServiceLogLoadCompleted = true;
                Console.WriteLine("The file could not be read:");
                Console.WriteLine(e.Message);
            }

            swCompass.Reset();
            swCompass.Start();
            // Adding the objects to the collections

            //compassLogCollection.EnableNotify = false;

            Parallel.For(0, lines.Count(), j => {
                                               //for (int i = 0; i < lines.Count(); i++) {
                                               string dateAndTimestamp = "";
                                               if (!CompassLogLoadCompleted || !CoreServiceLogLoadCompleted) {
                                                   try {
                                                       if (SingleLined(ref lines, j)) {
                                                           parts = lines[j].Split(delimiters,
                                                                                  StringSplitOptions.
                                                                                      RemoveEmptyEntries);
                                                           numberOfSingleLineLog++;
                                                           foreach (string t in parts) {
                                                               switch (ff) {
                                                                   case 0:
                                                                       dateAndTimestamp = t;
                                                                       break;
                                                                   case 1:
                                                                       dateAndTimestamp += " " + t.Replace(",", ".");
                                                                       dateTime = DateTime.Parse(dateAndTimestamp);
                                                                       //dateTime = new DateTime();
                                                                       dateAndTimestamp = "";
                                                                       break;
                                                                   case 2:
                                                                       eLoggingLvl = loggingLvl.ParseLoggingLvl(t);
                                                                       break;
                                                                   case 3:
                                                                       threadId = t;
                                                                       break;

                                                                   default:
                                                                       temp += t;
                                                                       break;
                                                               }

                                                               ff++;
                                                           }

                                                           loggingMessage = temp;

                                                           temp = "";
                                                           ff = 0;
                                                           id++;
                                                           loggingLvl = new LoggingLvl(eLoggingLvl);

                                                           if (fileName.Contains("Compass")) {
                                                               //CompassLogLoadPercent = ((double) numberOfSingleLineLog/lines.Count())*100;

                                                               CompassLogData cLD =
                                                                   new CompassLogData(
                                                                       (numberOfSingleLineLog +
                                                                        numberOfmultipleLineLog),
                                                                       dateTime,
                                                                       loggingLvl, threadId,
                                                                       loggingMessage);

                                                               //await addRoCompassLogCollectionAsync(cLD);
                                                               compassLogCollection.Add(cLD);
                                                           } else if (fileName.Contains("CoreService")) {
                                                               CoreServiceLogData cSLD =
                                                                   new CoreServiceLogData(
                                                                       (numberOfSingleLineLog +
                                                                        numberOfmultipleLineLog),
                                                                       dateTime,
                                                                       loggingLvl,
                                                                       threadId,
                                                                       loggingMessage);
                                                               //await addRoCoreServiceCollectionAsync(cSLD);
                                                               coreServiceLogCollection.Add(cSLD);
                                                           } else {
                                                               Console.Out.WriteLine("File Not recognizable ");
                                                           }

                                                           //Console.Out.WriteLine(loggingMessage);
                                                           //loggingMessage = "";
                                                       } else {
                                                           loggingMessage2 += lines[j];
                                                           loggingMessage2 += "\n";
                                                           //parts[i] += lines[i];
                                                           //parts[i] += "\n";

                                                           if (NextLineIsANumber(ref lines, j)) {
                                                               numberOfmultipleLineLog++;
                                                               //Console.Out.WriteLine(loggingMessage2);
                                                               parts = loggingMessage2.Split(delimiters,
                                                                                             StringSplitOptions.
                                                                                                 RemoveEmptyEntries);
                                                               foreach (string t in parts) {
                                                                   switch (ff) {
                                                                       case 0:
                                                                           dateAndTimestamp = t;
                                                                           break;
                                                                       case 1:
                                                                           dateAndTimestamp += " " +
                                                                                               t.Replace(",", ".");
                                                                           //dateTime = DateTime.Parse(dateAndTimestamp);
                                                                           dateTime = new DateTime();
                                                                           dateAndTimestamp = "";
                                                                           break;
                                                                       case 2:
                                                                           eLoggingLvl =
                                                                               loggingLvl.ParseLoggingLvl(t);
                                                                           break;
                                                                       case 3:
                                                                           threadId = t;
                                                                           break;

                                                                       default:
                                                                           temp += t;
                                                                           break;
                                                                   }

                                                                   ff++;
                                                               }

                                                               loggingMessage = temp;

                                                               temp = "";
                                                               ff = 0;
                                                               id++;
                                                               loggingLvl = new LoggingLvl(eLoggingLvl);

                                                               if (fileName.Contains("Compass")) {
                                                                   CompassLogData cLD =
                                                                       new CompassLogData(
                                                                           (numberOfSingleLineLog +
                                                                            numberOfmultipleLineLog),
                                                                           dateTime,
                                                                           loggingLvl, threadId,
                                                                           loggingMessage);

                                                                   //await addRoCompassLogCollectionAsync(cLD);
                                                                   compassLogCollection.Add(cLD);
                                                               } else if (fileName.Contains("CoreService")) {
                                                                   CoreServiceLogData cSLD =
                                                                       new CoreServiceLogData(
                                                                           (numberOfSingleLineLog +
                                                                            numberOfmultipleLineLog),
                                                                           dateTime,
                                                                           loggingLvl,
                                                                           threadId,
                                                                           loggingMessage);

                                                                   //await addRoCoreServiceCollectionAsync(cSLD);
                                                                   coreServiceLogCollection.Add(cSLD);
                                                               } else {
                                                                   Console.Out.WriteLine("File Not recognizable ");
                                                               }

                                                               loggingMessage2 = "";
                                                           }
                                                       }
                                                   } catch (Exception e) {
                                                       Console.Out.WriteLine("Shit Happens");
                                                       Console.Out.WriteLine(e.StackTrace);
                                                   }

                                                   if (currentFile == "Compass") {
                                                       //CompassLogLoadPercent =
                                                       //    ((double)
                                                       //     i
                                                       //     /lines.Count())*100;

                                                       CompassLogLoadPercent = ((double)
                                                                                j
                                                                                /lines.Count())*100;
                                                   } else if (currentFile == "CoreService") {
                                                       CoreServiceLogLoadPercent =
                                                           ((double)
                                                            j
                                                            /lines.Count())*100;
                                                   }
                                               }
                                           });
            //}
            //compassLogCollection.EnableNotify = true;
            //compassLogCollection.notifyAll();

            if (currentFile == "Compass") {
                Console.Out.WriteLine("Compass TIME: " + swCompass.Elapsed);
            } else {
                Console.Out.WriteLine("CoreSevice TIME: " + swCompass.Elapsed);
            }

            if (currentFile == "Compass") {
                CompassLogLoadCompleted = true;
                Console.Out.WriteLine("Compass LOADING DONE");
            } else if (currentFile == "CoreService") {
                CoreServiceLogLoadCompleted = true;
                Console.Out.WriteLine("CoreService LOADING DONE");
            }
            //CoreServiceLogLoadCompleted = true;
            Console.Out.WriteLine("numberOfSingleLineLog: " +
                                  numberOfSingleLineLog);
            Console.Out.WriteLine("numberOfmultipleLineLog: " +
                                  numberOfmultipleLineLog);
            Console.Out.WriteLine("numberOfLogs: " +
                                  (numberOfSingleLineLog +
                                   numberOfmultipleLineLog));
            Console.Out.WriteLine("");
            //}
        }
    }
public void加载日志文件(字符串文件名){
//Thread.CurrentThread.Priority=ThreadPriority.Lowest;
字符串currentFile=“”;
if(fileName.Contains(“Compass”)){
currentFile=“Compass”;
CompassLogLoadCompleted=false;
compassLogCollection.Clear();
compassLogCollection.aspallel();
}else if(fileName.Contains(“”){
currentFile=“CoreService”;
CoreServiceLogLoadCompleted=false;
coreServiceLogCollection.Clear();
;
compassLogCollection.aspallel();
}否则{
Console.Out.WriteLine(“错误文件”);
}
if(fileName.Contains(“CoreService”)||
fileName.Contains(“指南针”)){
int numberOfSingleLineLog=0;
int numberOfmultipleLineLog=0;
字符串[]行=新字符串[]{};
字符串temp=“”;
字符串[]部分;
DateTime DateTime=新的DateTime();
LoggingLvl LoggingLvl=新的LoggingLvl();
LoggingLvl.ELoggingLvl ELoggingLvl=新的LoggingLvl.ELoggingLvl();
int id=0;
字符[]分隔符=新的[]{''};
字符串threadId=“”;
字符串记录消息;
字符串loggingMessage2=“”;
//字符串dateAndTimestamp=“”;
int-ff=0;
//读取文件并将其添加到字符串行
试一试{
swCompass.Start();
lines=File.ReadAllLines(文件名);
swCompass.Stop();
}捕获(例外e){
CompassLogLoadCompleted=true;
CoreServiceLogLoadCompleted=true;
WriteLine(“无法读取文件:”);
控制台写入线(e.Message);
}
swCompass.Reset();
swCompass.Start();
//将对象添加到集合中
//compassLogCollection.EnableNotify=false;
Parallel.For(0,lines.Count(),j=>{
//对于(int i=0;i   at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
   at System.DateTime.Parse(String s)
   at LogViewerV1.LogSession.<>c__DisplayClass3.<LoadLogFile>b__0(Int32 i) in                 c:\Users\Reza\Documents\Visual Studio 2012\Projects\Pallas informatik\LogViewerV1\LogViewerV1\src\LogSession.cs:line 169
   A first chance exception of type 'System.FormatException' occurred in mscorlib.d
DateTime.Parse(dateAndTimestamp, theCorrectCulture)