void DbgManager_ProcessesChanged(object sender, DbgCollectionChangedEventArgs <DbgProcess> e) { if (!e.Added && e.Objects.Contains(currentProcess)) { currentProcess = null; } }
void DbgProcess_RuntimesChanged(object sender, DbgCollectionChangedEventArgs <DbgRuntime> e) { if (e.Added) { foreach (var r in e.Objects) { var assemblyInfoProvider = dbgAssemblyInfoProviderService.Create(r); if (assemblyInfoProvider == null) { continue; } ClassLoader classLoader; var dynamicModuleProvider = dbgDynamicModuleProviderService.Create(r); if (dynamicModuleProvider == null) { classLoader = null; } else { classLoader = classLoaderFactory.Create(r, dynamicModuleProvider); } r.GetOrCreateData(() => new RuntimeInfo(this, assemblyInfoProvider, dynamicModuleProvider, classLoader)); r.ModulesChanged += DbgRuntime_ModulesChanged; } } else { foreach (var r in e.Objects) { r.ModulesChanged -= DbgRuntime_ModulesChanged; } } }
void BoundCodeBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e) { Dispatcher.VerifyAccess(); if (e.Added) { AddBoundBreakpoints_DbgThread(e.Objects); } else { RemoveBoundBreakpoints_DbgThread(e.Objects); } }
void DbgCodeBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e) { if (!e.Added) { lock (lockObj) { foreach (var bp in e.Objects) { bpToHitCount.Remove(bp); } } } }
void DbgRuntime_ThreadsChanged(object?sender, DbgCollectionChangedEventArgs <DbgThread> e) { lock (lockObj) { if (e.Added) { threads.AddRange(e.Objects); } else { foreach (var thread in e.Objects) { bool b = threads.Remove(thread); Debug.Assert(b); } } } ThreadsChanged?.Invoke(this, new DbgCollectionChangedEventArgs <DbgThread>(e.Objects, added: e.Added)); }
void DbgManager_ProcessesChanged(object sender, DbgCollectionChangedEventArgs <DbgProcess> e) { if (e.Added) { foreach (var p in e.Objects) { p.RuntimesChanged += DbgProcess_RuntimesChanged; p.IsRunningChanged += DbgProcess_IsRunningChanged; } } else { foreach (var p in e.Objects) { p.RuntimesChanged -= DbgProcess_RuntimesChanged; p.IsRunningChanged -= DbgProcess_IsRunningChanged; } } }
void OnBreakpointsAdded_UI(DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e) { uiDispatcher.VerifyAccess(); if (!e.Added) { throw new InvalidOperationException(); } foreach (var bp in e.Objects) { if (bp.IsHidden) { continue; } var location = dbgBreakpointGlyphTextMarkerLocationProviderService.GetLocation(bp); if (location != null) { bp.GetOrCreateData(() => new BreakpointData(location)); UpdateMarker(bp); continue; } } }
void DbgCodeBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e) { if (e.Added) { UI(() => OnBreakpointsAdded_UI(e)); } else { var list = new List <(DbgCodeBreakpoint breakpoint, BreakpointData data)>(e.Objects.Count); foreach (var bp in e.Objects) { if (!bp.TryGetData(out BreakpointData data)) { continue; } list.Add((bp, data)); } if (list.Count > 0) { UI(() => OnBreakpointsRemoved_UI(list)); } } }
// DbgManager thread void DbgManager_ProcessesChanged(object sender, DbgCollectionChangedEventArgs <DbgProcess> e) { if (!e.Added) { bool raiseEvent = false; lock (lockObj) { if (processes.Count != 0) { for (int i = processes.Count - 1; i >= 0; i--) { if (e.Objects.Contains(processes[i])) { processes.RemoveAt(i); } } raiseEvent = processes.Count == 0; } } if (raiseEvent) { NotifyOwner(success: true); } } }
void DbgRuntime_ModulesChanged(object sender, DbgCollectionChangedEventArgs <DbgModule> e) { if (e.Added) { if (!TryGetRuntimeInfo((DbgRuntime)sender, out var info)) { return; } List <(DbgModule manifestModule, DbgModule module)> list = null; foreach (var module in e.Objects) { var manifestModule = info.AssemblyInfoProvider.GetManifestModule(module); // If it's the manifest module, it can't possibly have been inserted in the treeview if (manifestModule == null || manifestModule == module) { continue; } if (list == null) { list = new List <(DbgModule, DbgModule)>(); } list.Add((manifestModule, module)); } if (list != null) { uiDispatcher.UI(() => { foreach (var t in list) { OnModuleAdded_UI(info, t.manifestModule, t.module); } }); } } }
void DbgCodeBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e) => BreakpointsModified();
void DbgModuleBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgModuleBreakpoint> e) => Save();
void DbgCodeBreakpointsService_BreakpointsChanged(object sender, DbgCollectionChangedEventArgs <DbgCodeBreakpoint> e) => BreakpointsChanged?.Invoke(this, e);
// DbgManager thread void DbgManager_ProcessesChanged(object sender, DbgCollectionChangedEventArgs <DbgProcess> e) => InitializeProcesses_DbgManager(e.Objects, e.Added);
// DbgThread void DbgRuntime_ModulesChanged(object?sender, DbgCollectionChangedEventArgs <DbgModule> e) => UI(() => DbgRuntime_ModulesChanged_UI((DbgRuntime)sender !, e.Objects, e.Added));
// DbgThread void Process_RuntimesChanged(object?sender, DbgCollectionChangedEventArgs <DbgRuntime> e) => UI(() => Process_RuntimesChanged_UI(e.Objects, e.Added));
void DbgExceptionSettingsService_ExceptionsChanged(object sender, DbgCollectionChangedEventArgs <DbgExceptionSettingsInfo> e) => Save();
private void MyCustomMethod(DbgManager dbgManager, DbgCollectionChangedEventArgs <DbgProcess> args) { }