static void NotifyCurrentFrameChanged() { if (currentBacktrace != null) { pinnedWatches.InvalidateAll(); } if (CurrentFrameChanged != null) { CurrentFrameChanged(null, EventArgs.Empty); } }
static void Cleanup() { DebuggerSession currentSession; StatusBarIcon currentIcon; IConsole currentConsole; lock (cleanup_lock) { if (!IsDebugging) { return; } currentIcon = busyStatusIcon; currentSession = session; currentConsole = console; currentBacktrace = null; busyStatusIcon = null; session = null; console = null; pinnedWatches.InvalidateAll(); } if (oldLayout != null) { string layout = oldLayout; oldLayout = null; UnsetDebugLayout(layout); } currentSession.BusyStateChanged -= OnBusyStateChanged; currentSession.TargetEvent -= OnTargetEvent; currentSession.TargetStarted -= OnStarted; currentSession.BreakpointTraceHandler = null; currentSession.GetExpressionEvaluator = null; currentSession.TypeResolverHandler = null; currentSession.OutputWriter = null; currentSession.LogWriter = null; if (currentConsole != null) { currentConsole.CancelRequested -= OnCancelRequested; currentConsole.Dispose(); } DispatchService.GuiDispatch(delegate { HideExceptionCaughtDialog(); if (currentIcon != null) { currentIcon.Dispose(); currentIcon = null; } if (StoppedEvent != null) { StoppedEvent(null, new EventArgs()); } NotifyCallStackChanged(); NotifyCurrentFrameChanged(); NotifyLocationChanged(); }); currentSession.Dispose(); }
static void Cleanup() { DebuggerSession currentSession; StatusBarIcon currentIcon; OperationConsole currentConsole; lock (cleanup_lock) { if (!IsDebugging) { return; } currentIcon = busyStatusIcon; currentSession = session; currentConsole = console; nextStatementLocations.Clear(); currentBacktrace = null; busyStatusIcon = null; session = null; console = null; pinnedWatches.InvalidateAll(); } UnsetDebugLayout(); currentSession.BusyStateChanged -= OnBusyStateChanged; currentSession.TargetEvent -= OnTargetEvent; currentSession.TargetStarted -= OnStarted; currentSession.BreakpointTraceHandler = null; currentSession.GetExpressionEvaluator = null; currentSession.TypeResolverHandler = null; currentSession.OutputWriter = null; currentSession.LogWriter = null; currentDebugOperation.Cleanup(); if (currentConsole != null) { cancelRegistration.Dispose(); currentConsole.Dispose(); } Runtime.RunInMainThread(delegate { HideExceptionCaughtDialog(); if (currentIcon != null) { currentIcon.Dispose(); currentIcon = null; } if (StoppedEvent != null) { StoppedEvent(null, new EventArgs()); } NotifyCallStackChanged(); NotifyCurrentFrameChanged(); NotifyLocationChanged(); }); currentSession.Dispose(); }