Browse Source

Threads can be frozen using threads pad context menu

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@407 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 20 years ago
parent
commit
790ee2fe27
  1. 55
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs

55
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs

@ -10,6 +10,7 @@ using System.Windows.Forms; @@ -10,6 +10,7 @@ using System.Windows.Forms;
using System.Drawing;
using System.CodeDom.Compiler;
using System.Collections;
using System.ComponentModel;
using System.IO;
using System.Diagnostics;
using ICSharpCode.Core;
@ -56,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -56,6 +57,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
runningThreadsList.GridLines = false;
runningThreadsList.Activation = ItemActivation.OneClick;
runningThreadsList.Columns.AddRange(new ColumnHeader[] {id, name, location, priority, breaked} );
runningThreadsList.ContextMenuStrip = CreateContextMenuStrip();
runningThreadsList.ItemActivate += new EventHandler(RunningThreadsListItemActivate);
id.Width = 100;
name.Width = 300;
@ -92,7 +94,58 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -92,7 +94,58 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
name.Text = "Name";
location.Text = "Location";
priority.Text = "Priority";
breaked.Text = "Breaked";
breaked.Text = "Frozen";
}
ContextMenuStrip CreateContextMenuStrip()
{
ContextMenuStrip menu = new ContextMenuStrip();
menu.Opening += FillContextMenuStrip;
return menu;
}
void FillContextMenuStrip(object sender, CancelEventArgs e)
{
ListView.SelectedListViewItemCollection items = runningThreadsList.SelectedItems;
if (items.Count == 0) {
e.Cancel = true;
return;
}
ListViewItem item = items[0];
ContextMenuStrip menu = sender as ContextMenuStrip;
menu.Items.Clear();
ToolStripMenuItem freezeItem;
freezeItem = new ToolStripMenuItem();
freezeItem.Text = "Freeze";
freezeItem.Checked = (item.Tag as Thread).Suspended;
freezeItem.Click +=
delegate {
ListView.SelectedListViewItemCollection selItems = runningThreadsList.SelectedItems;
if (selItems.Count == 0) {
return;
}
bool suspended = (selItems[0].Tag as Thread).Suspended;
if (!debuggerCore.IsPaused) {
MessageBox.Show("You can not freeze or thaw thread while the debugger is running.", "Thread freeze");
return;
}
foreach(ListViewItem i in selItems) {
(i.Tag as Thread).Suspended = !suspended;
}
RefreshList();
};
menu.Items.AddRange(new ToolStripItem[] {
freezeItem,
});
e.Cancel = false;
}
void RefreshList()

Loading…
Cancel
Save