/// <summary> /// Create GCInfo panel /// </summary> internal Panel CreateGCInfoPanel(TextBox helpBox) { m_helpBox = helpBox; StackPanel reason = new StackPanel(); { reason.AddTextBlock("GC Reason ", "GCReason", OnHelp, 3, 2); reason.AddButton("Select All", 60, ReasonSelectAll, 3, 2); m_inducedBlocking = reason.AddCheckBox(true, "Induced Blocking", 3, 2, UpdateEvents); m_inducedNonblocking = reason.AddCheckBox(true, "Induced Nonblocking", 3, 0, UpdateEvents); m_lowMemory = reason.AddCheckBox(true, "Low Memory", 3, 0, UpdateEvents); m_allocSOH = reason.AddCheckBox(true, "Alloc SOH", 3, 0, UpdateEvents); m_AllocLOH = reason.AddCheckBox(true, "Alloc LOH", 3, 0, UpdateEvents); } StackPanel gen = new StackPanel(); { gen.AddTextBlock("Generation ", "Generation", OnHelp, 3, 2); gen.AddButton("Select All", 60, GenerationSelectAll, 3, 2); m_g0 = gen.AddCheckBox(true, "0", 3, 0, UpdateEvents); m_g1 = gen.AddCheckBox(true, "1", 3, 0, UpdateEvents); m_g2Blocking = gen.AddCheckBox(true, "2(Blocking)", 3, 0, UpdateEvents); m_g2Background = gen.AddCheckBox(true, "2(Background)", 3, 0, UpdateEvents); } StackPanel controls = new StackPanel(); controls.Background = Brushes.LightGray; controls.Width = 240; controls.Children.Add(Toolbox.Stack(Orientation.Horizontal, reason, gen)); m_grid = new DataGrid(); m_grid.Background = Brushes.LightGray; m_grid.MouseRightButtonUp += MouseRightButtonUp; m_grid.AutoGenerateColumns = false; m_grid.IsReadOnly = true; // Columns m_grid.AddColumn(Toolbox.CreateTextBlock("GCIndex ", "GCIndex", OnHelp), "Number", true, Toolbox.CountFormatN0); m_grid.AddColumn(Toolbox.CreateTextBlock("Gen ", "GenNumberWithSuffix", OnHelp), "GenerationName"); m_grid.AddColumn(Toolbox.CreateTextBlock("Reason ", "GCReason", OnHelp), "Reason"); m_grid.AddColumn("PauseStart", "PauseStart", true, Toolbox.TimeFormat); m_grid.AddColumn("Pause", "PauseDuration", true, Toolbox.TimeFormat); m_grid.AddColumn("SizeBefore", "SizeBefore", true, Toolbox.MemoryFormatN0); m_grid.AddColumn("SizeAfter", "SizeAfter", true, Toolbox.MemoryFormatN0); m_grid.AddColumn("GCHandle", "GcHandleCount", true, Toolbox.CountFormatN0); m_grid.AddColumn("SyncBlock", "SyncBlockCount", true, Toolbox.CountFormatN0); m_grid.AddColumn("PinnedObj", "PinObjectCount", true, Toolbox.CountFormatN0); InitHelpText(); return(Toolbox.DockTopLeft(null, controls, m_grid)); }