/// <summary> /// Ends the session and calculates all the data. /// </summary> public void End() { try { Track("end"); // Summarizes the data. List<DiagnosticEntry> entries = this.Entries; if (entries == null || entries.Count == 0) return; DiagnosticEntry summary = new DiagnosticEntry(); DiagnosticEntry first = Entries[0]; DiagnosticEntry last = Entries[Entries.Count - 1]; summary.StartDate = first.StartDate; summary.StartTime = first.StartTime; summary.Memory = last.Memory; summary.MemoryLeft = last.MemoryLeft; summary.LastError = last.LastError; summary.MemoryText = last.Memory + " k"; summary.MemoryLeftText = last.MemoryLeft + " k"; summary.Label = this.Label; summary.Index = last.Index + 1; int max = entries[0].MemoryPeak; summary.MemoryPeak = max; summary.MemoryPeakText = max + " k"; summary.TotalErrors = last.TotalErrors; for (int ndx = 0; ndx < entries.Count; ndx++) { DiagnosticEntry entry = entries[ndx]; if (entry.MemoryPeak > max) { summary.MemoryPeak = entry.MemoryPeak; summary.MemoryPeakText = entry.MemoryPeak + " k"; } } Summary = summary; this.EndTime = DateTime.Now; } catch (Exception ex) { } }
/// <summary> /// Track information. /// </summary> public void Track(string label) { try { long limit = DeviceStatus.ApplicationMemoryUsageLimit; long current = DeviceStatus.ApplicationCurrentMemoryUsage; long remaining = limit - current; long peak = DeviceStatus.ApplicationPeakMemoryUsage; long safetyMargin = limit - peak; DateTime start = DateTime.Now; var lastEntry = Logger.GetLastError(); DiagnosticEntry entry = new DiagnosticEntry(); entry.Label = label; entry.StartDate = start.ToShortDateString(); entry.StartTime = start.ToString("hh:mm:ss tt"); entry.Memory = Convert.ToInt32(current / 1024); entry.MemoryLeft = Convert.ToInt32(remaining / 1024); entry.MemoryPeak = Convert.ToInt32(peak / 1024); entry.TotalErrors = Logger.GetTotalEntries(); entry.LastError = lastEntry == null ? "" : lastEntry.Message; Entries.Add(entry); } catch (Exception ex) { } }