/// <summary> /// Event Handler for the creation of the Debugee's threads /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">An EventArgs that contains no event data.</param> private void CreateThreadEventHandler(object sender, CorThreadEventArgs e) { if (!e.Thread.Process.HasQueuedCallbacks(null)) { e.Continue = false; SignalAttachedProcess(); } else { e.Continue = true; } }
void OnBreak(object sender, CorThreadEventArgs e) { lock (debugLock) { if (evaluating) { e.Continue = true; return; } } OnStopped(); e.Continue = false; SetActiveThread(e.Thread); TargetEventArgs args = new TargetEventArgs(TargetEventType.TargetInterrupted); args.Process = GetProcess(process); args.Thread = GetThread(e.Thread); args.Backtrace = new Backtrace(new CorBacktrace(e.Thread, this)); OnTargetEvent(args); }
void OnCreateThread(object sender, CorThreadEventArgs e) { OnDebuggerOutput(false, string.Format("Started Thread {0}\n", e.Thread.Id)); e.Continue = true; }
void OnThreadExit(object sender, CorThreadEventArgs e) { lock (threads) { threads.Remove(e.Thread.Id); } }
void OnNameChange(object sender, CorThreadEventArgs e) { }
/// <summary> /// Event handler for when a thread of the process exits /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">An EventArgs that contains no event data.</param> private void ExitThreadEventHandler(object sender, CorThreadEventArgs e) { }