public ThreadInfo Duplicate() { ThreadInfo duplicate = new ThreadInfo(); duplicate.Id = Id; MicroThreadItems.ForEach(item => duplicate.MicroThreadItems.Add(item.Duplicate())); return duplicate; }
public ThreadInfo Duplicate() { ThreadInfo duplicate = new ThreadInfo(); duplicate.Id = Id; MicroThreadItems.ForEach(item => duplicate.MicroThreadItems.Add(item.Duplicate())); return(duplicate); }
/// <summary> /// Creates the render element for a thread over one frame. /// </summary> /// <param name="frameBeginTime">Time offset (in second) to align all micro threads render on the frame time.</param> /// <param name="thread">Instance that stores all micro thread events.</param> /// <returns>Returns a <c>UIElement</c> (<c>VisualContainerElement</c>) containing rendered micro thread elements for the given thread.</returns> private UIElement CreateFrameThreadElement(double frameBeginTime, ThreadInfo thread) { if (thread == null) throw new ArgumentNullException("thread"); if (thread.MicroThreadItems.Count == 0) return null; double y = ThreadLineHeightMargin; double h = ThreadLineHeight - ThreadLineHeightMargin * 2.0; VisualContainerElement container = new VisualContainerElement(); foreach (MicroThreadInfo microThread in thread.MicroThreadItems) { double x = (microThread.BeginTime - frameBeginTime) * PixelsPerSecond; double w = (microThread.EndTime - microThread.BeginTime) * PixelsPerSecond; if (w <= 0.0) continue; container.AddVisual(CreateRectangle(x, y, w, h)); } return container; }