コード例 #1
0
ファイル: Program.cs プロジェクト: larsch/uptimes
        private static void PrintStartStop(EventLog systemLog)
        {
            EventLogEntryCollection entries = systemLog.Entries;

            EventLogEntry[] entriesArray = new EventLogEntry[entries.Count];
            entries.CopyTo(entriesArray, 0);
            DateTime startTime = entriesArray.First().TimeGenerated;
            bool     started   = true;
            bool     sleeping  = false;

            foreach (EventLogEntry entry in entriesArray)
            {
                switch (GetEventType(entry))
                {
                case EventType.StartingUp:
                    if (started)
                    {
                        Program.PrintDate(startTime, entry.TimeGenerated, "unexpected restart");
                    }
                    startTime = entry.TimeGenerated;
                    started   = true;
                    break;

                case EventType.ShuttingDown:
                    Program.PrintDate(startTime, entry.TimeGenerated, "shutting down");
                    started = false;
                    break;

                case EventType.EnteringSleep:
                    sleeping = true;
                    Program.PrintDate(startTime, entry.TimeGenerated, "going to sleep");
                    started = false;
                    break;

                case EventType.ResumingFromSleep:
                    sleeping  = false;
                    startTime = entry.TimeGenerated;
                    started   = true;
                    break;

                case EventType.SystemTimeChanged:
                    if (sleeping)
                    {
                        sleeping  = false;
                        startTime = entry.TimeGenerated;
                    }
                    break;
                }
            }
            Program.PrintDate(startTime, DateTime.Now, "still running");
        }