/// <summary> /// Pára e retorna o relatório do timer /// </summary> /// <returns></returns> public override string ToString() { Stop(); string report = ""; TimeSpan total = TimeSpan.Zero; var maxWidth = timers.Max(p => p.ProcessName.Length); maxWidth = Math.Max(maxWidth, "Total".Length); var ts = timers.Where(p => p.isValid).ToList(); for (int i = 0; i < ts.Count; i++) { total += timers[i].TimeElapsed; } for (int i = 0; i < ts.Count; i++) { report += timers[i].FormatTotal(maxWidth) + (ts.Count > 1 ? " --> " + string.Format("{0:p2}", timers[i].TimeElapsed.TotalMilliseconds / total.TotalMilliseconds).PadLeft(8) : "") + Environment.NewLine; } if (ts.Count > 1 && total != TimeSpan.Zero) { report += TimerCountInfo.FormatTotal("Total", total, ts.First().start, ts.Last().end, maxWidth); } return(report); }
private void Stop() { if (info != null) { info.Stop(); if (info != info0) { timers.Add(info); } info = null; } }
/// <summary> /// Inicializa uma nova instância de TimerCount /// </summary> /// <param name="title">Título do timer</param> /// <param name="start">Se start=true, começa a medir o tempo. Se start=false, não começa a mediro tempo</param> public TimerCount(string title, bool start) { timers = new List <TimerCountInfo>(); info0 = info = new TimerCountInfo(title, start); timers.Add(info); }
/// <summary> /// Cria um novo time /// </summary> /// <param name="title">Título do timer</param> /// <param name="start">Se start=true, começa a medir o tempo. Se start=false, não começa a mediro tempo</param> public void Next(string title, bool start) { Stop(); info = new TimerCountInfo(title, start); }