Пример #1
0
        /// <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)
            {

            }
        }
Пример #2
0
        /// <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)
            {
            }
        }