Browse Source
git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@62 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61shortcuts
19 changed files with 381 additions and 497 deletions
@ -1,7 +1,8 @@
@@ -1,7 +1,8 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
||||
<PropertyGroup> |
||||
<LastOpenVersion>8.0.41115</LastOpenVersion> |
||||
<ProjectView>ShowAllFiles</ProjectView> |
||||
<ProjectTrust>0</ProjectTrust> |
||||
</PropertyGroup> |
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' " /> |
||||
</Project> |
@ -1,156 +0,0 @@
@@ -1,156 +0,0 @@
|
||||
// <file>
|
||||
// <owner name="David Srbecký" email="dsrbecky@post.cz"/>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Runtime.InteropServices; |
||||
using System.Collections; |
||||
|
||||
using DebuggerInterop.Core; |
||||
using DebuggerInterop.MetaData; |
||||
|
||||
namespace DebuggerLibrary |
||||
{ |
||||
public class BreakpointCollection: CollectionBase |
||||
{ |
||||
internal BreakpointCollection() |
||||
{ |
||||
NDebugger.Modules.ModuleAdded += new ModuleEventHandler(SetBreakpointsInModule); |
||||
} |
||||
|
||||
public event BreakpointEventHandler BreakpointAdded; |
||||
|
||||
private void OnBreakpointAdded(Breakpoint breakpoint) |
||||
{ |
||||
breakpoint.BreakpointStateChanged += new BreakpointEventHandler(OnBreakpointStateChanged); |
||||
breakpoint.BreakpointHit += new BreakpointEventHandler(OnBreakpointHit); |
||||
if (BreakpointAdded != null) |
||||
BreakpointAdded(this, new BreakpointEventArgs(breakpoint)); |
||||
} |
||||
|
||||
|
||||
public event BreakpointEventHandler BreakpointRemoved; |
||||
|
||||
private void OnBreakpointRemoved(Breakpoint breakpoint) |
||||
{ |
||||
breakpoint.BreakpointStateChanged -= new BreakpointEventHandler(OnBreakpointStateChanged); |
||||
breakpoint.BreakpointHit -= new BreakpointEventHandler(OnBreakpointHit); |
||||
if (BreakpointRemoved != null) |
||||
BreakpointRemoved(this, new BreakpointEventArgs(breakpoint)); |
||||
} |
||||
|
||||
|
||||
public event BreakpointEventHandler BreakpointStateChanged; |
||||
|
||||
private void OnBreakpointStateChanged(object sender, BreakpointEventArgs e) |
||||
{ |
||||
if (BreakpointStateChanged != null) |
||||
BreakpointStateChanged(this, new BreakpointEventArgs(e.Breakpoint)); |
||||
} |
||||
|
||||
|
||||
public event BreakpointEventHandler BreakpointHit; |
||||
|
||||
private void OnBreakpointHit(object sender, BreakpointEventArgs e) |
||||
{ |
||||
if (BreakpointHit != null) |
||||
BreakpointHit(this, new BreakpointEventArgs(e.Breakpoint)); |
||||
} |
||||
|
||||
|
||||
public Breakpoint this[int index] |
||||
{ |
||||
get |
||||
{ |
||||
return( (Breakpoint) List[index] ); |
||||
} |
||||
set |
||||
{ |
||||
Breakpoint oldValue = (Breakpoint)List[index]; |
||||
List[index] = value; |
||||
OnBreakpointRemoved( oldValue ); |
||||
OnBreakpointAdded( value ); |
||||
} |
||||
} |
||||
|
||||
internal Breakpoint this[ICorDebugBreakpoint corBreakpoint] |
||||
{ |
||||
get |
||||
{ |
||||
foreach(Breakpoint breakpoint in InnerList) |
||||
if (breakpoint == corBreakpoint) |
||||
return breakpoint; |
||||
|
||||
throw new UnableToGetPropertyException(this, "this[ICorDebugBreakpoint]", "Breakpoint is not in collection"); |
||||
} |
||||
} |
||||
|
||||
public int Add(Breakpoint breakpoint) |
||||
{ |
||||
System.Diagnostics.Trace.Assert(breakpoint != null); |
||||
if (breakpoint != null) |
||||
{ |
||||
int retVal = List.Add(breakpoint); |
||||
breakpoint.SetBreakpoint(); |
||||
OnBreakpointAdded(breakpoint); |
||||
return retVal; |
||||
} else { |
||||
return -1; |
||||
} |
||||
} |
||||
|
||||
public int Add(SourcecodeSegment segment) |
||||
{ |
||||
return Add(new Breakpoint(segment)); |
||||
} |
||||
|
||||
public int Add(int line) |
||||
{ |
||||
return Add(new Breakpoint(line)); |
||||
} |
||||
|
||||
public int Add(string sourceFilename, int line) |
||||
{ |
||||
return Add(new Breakpoint(sourceFilename, line)); |
||||
} |
||||
|
||||
public int Add(string sourceFilename, int line, int column) |
||||
{ |
||||
return Add(new Breakpoint(sourceFilename, line, column)); |
||||
} |
||||
|
||||
public int IndexOf( Breakpoint breakpoint ) |
||||
{ |
||||
return( List.IndexOf( breakpoint ) ); |
||||
} |
||||
|
||||
public void Insert( int index, Breakpoint breakpoint ) |
||||
{ |
||||
System.Diagnostics.Trace.Assert(breakpoint != null); |
||||
if (breakpoint != null) |
||||
{ |
||||
List.Insert( index, breakpoint ); |
||||
OnBreakpointAdded(breakpoint); |
||||
} |
||||
} |
||||
|
||||
public void Remove( Breakpoint breakpoint ) |
||||
{ |
||||
breakpoint.Enabled = false; |
||||
List.Remove( breakpoint ); |
||||
OnBreakpointRemoved( breakpoint); |
||||
} |
||||
|
||||
public bool Contains( Breakpoint breakpoint ) |
||||
{ |
||||
return( List.Contains( breakpoint ) ); |
||||
} |
||||
|
||||
private void SetBreakpointsInModule(object sender, ModuleEventArgs e) |
||||
{ |
||||
foreach (Breakpoint b in InnerList) { |
||||
b.SetBreakpoint(); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,125 @@
@@ -0,0 +1,125 @@
|
||||
// <file>
|
||||
// <owner name="David Srbecký" email="dsrbecky@post.cz"/>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Runtime.InteropServices; |
||||
using System.Collections.Generic; |
||||
|
||||
using DebuggerInterop.Core; |
||||
using DebuggerInterop.MetaData; |
||||
|
||||
namespace DebuggerLibrary |
||||
{ |
||||
public partial class NDebugger |
||||
{ |
||||
List<Breakpoint> breakpointCollection = new List<Breakpoint>(); |
||||
|
||||
public event BreakpointEventHandler BreakpointAdded; |
||||
public event BreakpointEventHandler BreakpointRemoved; |
||||
public event BreakpointEventHandler BreakpointStateChanged; |
||||
public event BreakpointEventHandler BreakpointHit; |
||||
|
||||
protected void OnBreakpointAdded(Breakpoint breakpoint) |
||||
{ |
||||
if (BreakpointAdded != null) { |
||||
BreakpointAdded(this, new BreakpointEventArgs(breakpoint)); |
||||
} |
||||
} |
||||
|
||||
protected void OnBreakpointRemoved(Breakpoint breakpoint) |
||||
{ |
||||
if (BreakpointRemoved != null) { |
||||
BreakpointRemoved(this, new BreakpointEventArgs(breakpoint)); |
||||
} |
||||
} |
||||
|
||||
protected void OnBreakpointStateChanged(object sender, BreakpointEventArgs e) |
||||
{ |
||||
if (BreakpointStateChanged != null) { |
||||
BreakpointStateChanged(this, new BreakpointEventArgs(e.Breakpoint)); |
||||
} |
||||
} |
||||
|
||||
protected void OnBreakpointHit(object sender, BreakpointEventArgs e) |
||||
{ |
||||
if (BreakpointHit != null) { |
||||
BreakpointHit(this, new BreakpointEventArgs(e.Breakpoint)); |
||||
} |
||||
} |
||||
|
||||
public IList<Breakpoint> Breakpoints { |
||||
get { |
||||
return breakpointCollection.AsReadOnly(); |
||||
} |
||||
} |
||||
|
||||
internal Breakpoint GetBreakpoint(ICorDebugBreakpoint corBreakpoint) |
||||
{ |
||||
foreach(Breakpoint breakpoint in breakpointCollection) { |
||||
if (breakpoint == corBreakpoint) { |
||||
return breakpoint; |
||||
} |
||||
} |
||||
|
||||
throw new UnableToGetPropertyException(this, "GetBreakpoint(ICorDebugBreakpoint corBreakpoint)", "Breakpoint is not in collection"); |
||||
} |
||||
|
||||
public Breakpoint AddBreakpoint(Breakpoint breakpoint) |
||||
{ |
||||
breakpointCollection.Add(breakpoint); |
||||
|
||||
breakpoint.SetBreakpoint(); |
||||
breakpoint.BreakpointStateChanged += new BreakpointEventHandler(OnBreakpointStateChanged); |
||||
breakpoint.BreakpointHit += new BreakpointEventHandler(OnBreakpointHit); |
||||
|
||||
OnBreakpointAdded(breakpoint); |
||||
|
||||
return breakpoint; |
||||
} |
||||
|
||||
public Breakpoint AddBreakpoint(SourcecodeSegment segment) |
||||
{ |
||||
return AddBreakpoint(new Breakpoint(segment)); |
||||
} |
||||
|
||||
public Breakpoint AddBreakpoint(int line) |
||||
{ |
||||
return AddBreakpoint(new Breakpoint(line)); |
||||
} |
||||
|
||||
public Breakpoint AddBreakpoint(string sourceFilename, int line) |
||||
{ |
||||
return AddBreakpoint(new Breakpoint(sourceFilename, line)); |
||||
} |
||||
|
||||
public Breakpoint AddBreakpoint(string sourceFilename, int line, int column) |
||||
{ |
||||
return AddBreakpoint(new Breakpoint(sourceFilename, line, column)); |
||||
} |
||||
|
||||
public void RemoveBreakpoint(Breakpoint breakpoint) |
||||
{ |
||||
breakpoint.BreakpointStateChanged -= new BreakpointEventHandler(OnBreakpointStateChanged); |
||||
breakpoint.BreakpointHit -= new BreakpointEventHandler(OnBreakpointHit); |
||||
|
||||
breakpoint.Enabled = false; |
||||
breakpointCollection.Remove( breakpoint ); |
||||
OnBreakpointRemoved( breakpoint); |
||||
} |
||||
|
||||
internal void ResetBreakpoints() |
||||
{ |
||||
foreach (Breakpoint b in breakpointCollection) { |
||||
b.ResetBreakpoint(); |
||||
} |
||||
} |
||||
|
||||
internal void SetBreakpointsInModule(object sender, ModuleEventArgs e) |
||||
{ |
||||
foreach (Breakpoint b in breakpointCollection) { |
||||
b.SetBreakpoint(); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -1,101 +0,0 @@
@@ -1,101 +0,0 @@
|
||||
// <file>
|
||||
// <owner name="David Srbecký" email="dsrbecky@post.cz"/>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections; |
||||
|
||||
using DebuggerInterop.Core; |
||||
|
||||
namespace DebuggerLibrary |
||||
{ |
||||
public class ModuleCollection: ReadOnlyCollectionBase |
||||
{ |
||||
int lastAssignedOrderOfLoading= 0; |
||||
|
||||
public event ModuleEventHandler ModuleAdded; |
||||
|
||||
private void OnModuleAdded(Module module) |
||||
{ |
||||
if (ModuleAdded != null) |
||||
ModuleAdded(this, new ModuleEventArgs(module)); |
||||
} |
||||
|
||||
|
||||
public event ModuleEventHandler ModuleRemoved; |
||||
|
||||
private void OnModuleRemoved(Module module) |
||||
{ |
||||
if (ModuleRemoved != null) |
||||
ModuleRemoved(this, new ModuleEventArgs(module)); |
||||
} |
||||
|
||||
|
||||
public Module this[int index] { |
||||
get { |
||||
return (Module) InnerList[index]; |
||||
} |
||||
} |
||||
|
||||
public Module this[string filename] { |
||||
get { |
||||
foreach(Module module in InnerList) |
||||
if (module.Filename == filename) |
||||
return module; |
||||
|
||||
throw new UnableToGetPropertyException(this, "this[string]", "Module \"" + filename + "\" is not in collection"); |
||||
} |
||||
} |
||||
|
||||
internal Module this[ICorDebugModule corModule] |
||||
{ |
||||
get |
||||
{ |
||||
foreach(Module module in InnerList) |
||||
if (module.CorModule == corModule) |
||||
return module; |
||||
|
||||
throw new UnableToGetPropertyException(this, "this[ICorDebugModule]", "Module is not in collection"); |
||||
} |
||||
} |
||||
|
||||
internal void Clear() |
||||
{ |
||||
foreach (Module m in InnerList) { |
||||
OnModuleRemoved(m); |
||||
} |
||||
InnerList.Clear(); |
||||
lastAssignedOrderOfLoading = 0; |
||||
} |
||||
|
||||
internal void Add(Module module) |
||||
{ |
||||
System.Diagnostics.Trace.Assert(module != null); |
||||
if (module != null) |
||||
{ |
||||
module.OrderOfLoading = lastAssignedOrderOfLoading; |
||||
lastAssignedOrderOfLoading++; |
||||
InnerList.Add(module); |
||||
OnModuleAdded(module); |
||||
} |
||||
} |
||||
|
||||
internal void Add(ICorDebugModule corModule) |
||||
{ |
||||
System.Diagnostics.Trace.Assert(corModule != null); |
||||
if (corModule != null) |
||||
Add(new Module(corModule)); |
||||
} |
||||
|
||||
internal void Remove(Module module) |
||||
{ |
||||
InnerList.Remove(module); |
||||
OnModuleRemoved (module); |
||||
} |
||||
|
||||
internal void Remove(ICorDebugModule corModule) |
||||
{ |
||||
Remove(this[corModule]); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,96 @@
@@ -0,0 +1,96 @@
|
||||
// <file>
|
||||
// <owner name="David Srbecký" email="dsrbecky@post.cz"/>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
|
||||
using DebuggerInterop.Core; |
||||
|
||||
namespace DebuggerLibrary |
||||
{ |
||||
public partial class NDebugger |
||||
{ |
||||
int lastAssignedModuleOrderOfLoading= 0; |
||||
|
||||
List<Module> moduleCollection = new List<Module>(); |
||||
|
||||
public event ModuleEventHandler ModuleLoaded; |
||||
public event ModuleEventHandler ModuleUnloaded; |
||||
|
||||
protected void OnModuleLoaded(Module module) |
||||
{ |
||||
if (ModuleLoaded != null) { |
||||
ModuleLoaded(this, new ModuleEventArgs(module)); |
||||
} |
||||
} |
||||
|
||||
protected void OnModuleUnloaded(Module module) |
||||
{ |
||||
if (ModuleUnloaded != null) { |
||||
ModuleUnloaded(this, new ModuleEventArgs(module)); |
||||
} |
||||
} |
||||
|
||||
public IList<Module> Modules { |
||||
get{ |
||||
return moduleCollection.AsReadOnly(); |
||||
} |
||||
} |
||||
|
||||
public Module GetModule(string filename) |
||||
{ |
||||
foreach(Module module in moduleCollection) { |
||||
if (module.Filename == filename) { |
||||
return module; |
||||
} |
||||
} |
||||
|
||||
throw new UnableToGetPropertyException(this, "GetModule(string filename)", "Module \"" + filename + "\" is not in collection"); |
||||
} |
||||
|
||||
internal Module GetModule(ICorDebugModule corModule) |
||||
{ |
||||
foreach(Module module in moduleCollection) { |
||||
if (module.CorModule == corModule) { |
||||
return module; |
||||
} |
||||
} |
||||
|
||||
throw new UnableToGetPropertyException(this, "GetModule(ICorDebugModule corModule)", "Module is not in collection"); |
||||
} |
||||
|
||||
internal void AddModule(Module module) |
||||
{ |
||||
module.OrderOfLoading = lastAssignedModuleOrderOfLoading; |
||||
lastAssignedModuleOrderOfLoading++; |
||||
moduleCollection.Add(module); |
||||
OnModuleLoaded(module); |
||||
} |
||||
|
||||
internal void AddModule(ICorDebugModule corModule) |
||||
{ |
||||
AddModule(new Module(corModule)); |
||||
} |
||||
|
||||
internal void RemoveModule(Module module) |
||||
{ |
||||
moduleCollection.Remove(module); |
||||
OnModuleUnloaded(module); |
||||
} |
||||
|
||||
internal void RemoveModule(ICorDebugModule corModule) |
||||
{ |
||||
RemoveModule(GetModule(corModule)); |
||||
} |
||||
|
||||
internal void ClearModules() |
||||
{ |
||||
foreach (Module m in moduleCollection) { |
||||
OnModuleUnloaded(m); |
||||
} |
||||
moduleCollection.Clear(); |
||||
lastAssignedModuleOrderOfLoading = 0; |
||||
} |
||||
} |
||||
} |
@ -1,39 +0,0 @@
@@ -1,39 +0,0 @@
|
||||
// <file>
|
||||
// <owner name="David Srbecký" email="dsrbecky@post.cz"/>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections; |
||||
using System.Diagnostics; |
||||
|
||||
using DebuggerInterop.Core; |
||||
|
||||
namespace DebuggerLibrary |
||||
{ |
||||
public class FunctionCollection: ReadOnlyCollectionBase |
||||
{ |
||||
internal void Add(Function function) |
||||
{ |
||||
System.Diagnostics.Trace.Assert(function != null); |
||||
if (function != null) |
||||
InnerList.Add(function); |
||||
} |
||||
|
||||
public Function this[int index] { |
||||
get { |
||||
return (Function) InnerList[index]; |
||||
} |
||||
} |
||||
|
||||
public Function this[string functionName] |
||||
{ |
||||
get { |
||||
foreach (Function f in InnerList) |
||||
if (f.Name == functionName) |
||||
return f; |
||||
|
||||
throw new UnableToGetPropertyException(this, "this[string]", "Function \"" + functionName + "\" is not in collection"); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,89 @@
@@ -0,0 +1,89 @@
|
||||
// <file>
|
||||
// <owner name="David Srbecký" email="dsrbecky@post.cz"/>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections.Generic; |
||||
|
||||
using DebuggerInterop.Core; |
||||
|
||||
namespace DebuggerLibrary |
||||
{ |
||||
public partial class NDebugger |
||||
{ |
||||
List<Thread> threadCollection = new List<Thread>(); |
||||
|
||||
public event ThreadEventHandler ThreadStarted; |
||||
public event ThreadEventHandler ThreadExited; |
||||
public event ThreadEventHandler ThreadStateChanged; |
||||
|
||||
protected void OnThreadStarted(Thread thread) |
||||
{ |
||||
if (ThreadStarted != null) { |
||||
ThreadStarted(this, new ThreadEventArgs(thread)); |
||||
} |
||||
} |
||||
|
||||
protected void OnThreadExited(Thread thread) |
||||
{ |
||||
if (ThreadExited != null) { |
||||
ThreadExited(this, new ThreadEventArgs(thread)); |
||||
} |
||||
} |
||||
|
||||
protected void OnThreadStateChanged(object sender, ThreadEventArgs e) |
||||
{ |
||||
if (ThreadStateChanged != null) { |
||||
ThreadStateChanged(this, new ThreadEventArgs(e.Thread)); |
||||
} |
||||
} |
||||
|
||||
public IList<Thread> Threads { |
||||
get { |
||||
return threadCollection.AsReadOnly(); |
||||
} |
||||
} |
||||
|
||||
internal Thread GetThread(ICorDebugThread corThread) |
||||
{ |
||||
foreach(Thread thread in threadCollection) { |
||||
if (thread.CorThread == corThread) { |
||||
return thread; |
||||
} |
||||
} |
||||
|
||||
throw new UnableToGetPropertyException(this, "this[ICorDebugThread]", "Thread is not in collection"); |
||||
} |
||||
|
||||
internal void AddThread(Thread thread) |
||||
{ |
||||
threadCollection.Add(thread); |
||||
thread.ThreadStateChanged += new ThreadEventHandler(OnThreadStateChanged); |
||||
OnThreadStarted(thread); |
||||
} |
||||
|
||||
internal void AddThread(ICorDebugThread corThread) |
||||
{ |
||||
AddThread(new Thread(corThread)); |
||||
} |
||||
|
||||
internal void RemoveThread(Thread thread) |
||||
{ |
||||
threadCollection.Remove(thread); |
||||
thread.ThreadStateChanged -= new ThreadEventHandler(OnThreadStateChanged); |
||||
OnThreadExited(thread); |
||||
} |
||||
|
||||
internal void RemoveThread(ICorDebugThread corThread) |
||||
{ |
||||
RemoveThread(GetThread(corThread)); |
||||
} |
||||
|
||||
internal void ClearThreads() |
||||
{ |
||||
foreach (Thread t in threadCollection) { |
||||
RemoveThread(t); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -1,103 +0,0 @@
@@ -1,103 +0,0 @@
|
||||
// <file>
|
||||
// <owner name="David Srbecký" email="dsrbecky@post.cz"/>
|
||||
// </file>
|
||||
|
||||
using System; |
||||
using System.Collections; |
||||
|
||||
using DebuggerInterop.Core; |
||||
|
||||
namespace DebuggerLibrary |
||||
{ |
||||
public class ThreadCollection: ReadOnlyCollectionBase |
||||
{ |
||||
internal ThreadCollection() |
||||
{ |
||||
|
||||
} |
||||
|
||||
public event ThreadEventHandler ThreadAdded; |
||||
|
||||
private void OnThreadAdded(Thread thread) |
||||
{ |
||||
thread.ThreadStateChanged += new ThreadEventHandler(OnThreadStateChanged); |
||||
if (ThreadAdded != null) |
||||
ThreadAdded(this, new ThreadEventArgs(thread)); |
||||
} |
||||
|
||||
|
||||
public event ThreadEventHandler ThreadRemoved; |
||||
|
||||
private void OnThreadRemoved(Thread thread) |
||||
{ |
||||
thread.ThreadStateChanged -= new ThreadEventHandler(OnThreadStateChanged); |
||||
if (ThreadRemoved != null) |
||||
ThreadRemoved(this, new ThreadEventArgs(thread)); |
||||
} |
||||
|
||||
|
||||
public event ThreadEventHandler ThreadStateChanged; |
||||
|
||||
private void OnThreadStateChanged(object sender, ThreadEventArgs e) |
||||
{ |
||||
if (ThreadStateChanged != null) |
||||
ThreadStateChanged(this, new ThreadEventArgs(e.Thread)); |
||||
} |
||||
|
||||
|
||||
public Thread this[int index] { |
||||
get { |
||||
return (Thread) InnerList[index]; |
||||
} |
||||
} |
||||
|
||||
internal Thread this[ICorDebugThread corThread] |
||||
{ |
||||
get |
||||
{ |
||||
foreach(Thread thread in InnerList) |
||||
if (thread.CorThread == corThread) |
||||
return thread; |
||||
|
||||
throw new UnableToGetPropertyException(this, "this[ICorDebugThread]", "Thread is not in collection"); |
||||
} |
||||
} |
||||
|
||||
|
||||
internal void Clear() |
||||
{ |
||||
foreach (Thread t in InnerList) { |
||||
OnThreadRemoved(t); |
||||
} |
||||
InnerList.Clear(); |
||||
} |
||||
|
||||
internal void Add(Thread thread) |
||||
{ |
||||
System.Diagnostics.Trace.Assert(thread != null); |
||||
if (thread != null) |
||||
{ |
||||
InnerList.Add(thread); |
||||
OnThreadAdded(thread); |
||||
} |
||||
} |
||||
|
||||
internal void Add(ICorDebugThread corThread) |
||||
{ |
||||
System.Diagnostics.Trace.Assert(corThread != null); |
||||
if (corThread != null) |
||||
Add(new Thread(corThread)); |
||||
} |
||||
|
||||
internal void Remove(Thread thread) |
||||
{ |
||||
InnerList.Remove(thread); |
||||
OnThreadRemoved(thread); |
||||
} |
||||
|
||||
internal void Remove(ICorDebugThread corThread) |
||||
{ |
||||
Remove(this[corThread]); |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue