static public CpuTempMonitorMessage ParseMatchObject(Match match)
        {
            CpuTempMonitorMessage result = null;

            if (match != null && match.Success)
            {
                result             = new CpuTempMonitorMessage();
                result.Time        = DateTime.ParseExact(match.Groups[1].Value, "HH:mm:ss", CultureInfo.InvariantCulture);
                result.Temperature = double.Parse(match.Groups[2].Value, CultureInfo.InvariantCulture);
                result.CpuSpeed    = double.Parse(match.Groups[3].Value, CultureInfo.InvariantCulture);
                result.CpuLoad1    = double.Parse(match.Groups[4].Value, CultureInfo.InvariantCulture);
                result.CpuLoad2    = double.Parse(match.Groups[5].Value, CultureInfo.InvariantCulture);
                result.CpuLoad3    = double.Parse(match.Groups[6].Value, CultureInfo.InvariantCulture);
                result.CpuLoad4    = double.Parse(match.Groups[7].Value, CultureInfo.InvariantCulture);
            }

            return(result);
        }
        static public CpuTempMonitorMessage ParseMonitorString(object Sender, string rawData)
        {
            CpuTempMonitorMessage result = null;
            string          pattern      = @"(\d{2}:\d{2}:\d{2})\s+(\d+[,.]\d+)[^\d]+(\d+)\sMHz\s(\d+[,.]\d{2})\s(\d+[.,]\d{2})\s(\d+[.,]\d{2})\s(\d+[.,]\d{2})";
            MatchCollection match        = Regex.Matches(rawData, pattern);

            if (match.Count == 1)
            {
                result             = new CpuTempMonitorMessage();
                result.Time        = DateTime.ParseExact(match[0].Groups[1].Value, "HH:mm:ss", CultureInfo.InvariantCulture);
                result.Temperature = double.Parse(match[0].Groups[2].Value, CultureInfo.InvariantCulture);
                result.CpuSpeed    = double.Parse(match[0].Groups[3].Value, CultureInfo.InvariantCulture);
                result.CpuLoad1    = double.Parse(match[0].Groups[4].Value, CultureInfo.InvariantCulture);
                result.CpuLoad2    = double.Parse(match[0].Groups[5].Value, CultureInfo.InvariantCulture);
                result.CpuLoad3    = double.Parse(match[0].Groups[6].Value, CultureInfo.InvariantCulture);
                result.CpuLoad4    = double.Parse(match[0].Groups[7].Value, CultureInfo.InvariantCulture);
                result.Sender      = Sender;
            }
            return(result);
        }