void ModifyCore(DbgModuleBreakpointAndSettings[] settings) { dbgDispatcherProvider.VerifyAccess(); var bps = new List <DbgModuleBreakpointAndOldSettings>(settings.Length); lock (lockObj) { foreach (var info in settings) { var bpImpl = info.Breakpoint as DbgModuleBreakpointImpl; Debug.Assert(bpImpl != null); if (bpImpl == null) { continue; } Debug.Assert(breakpoints.Contains(bpImpl)); if (!breakpoints.Contains(bpImpl)) { continue; } var currentSettings = bpImpl.Settings; if (currentSettings == info.Settings) { continue; } bps.Add(new DbgModuleBreakpointAndOldSettings(bpImpl, currentSettings)); bpImpl.WriteSettings(info.Settings); } } if (bps.Count > 0) { BreakpointsModified?.Invoke(this, new DbgBreakpointsModifiedEventArgs(new ReadOnlyCollection <DbgModuleBreakpointAndOldSettings>(bps))); } }
void ModifyCore(DbgCodeBreakpointAndSettings[] settings) { dbgDispatcherProvider.VerifyAccess(); List<DbgCodeBreakpointImpl>? updatedBreakpoints = null; var bps = new List<DbgCodeBreakpointAndOldSettings>(settings.Length); lock (lockObj) { foreach (var info in settings) { var bpImpl = info.Breakpoint as DbgCodeBreakpointImpl; Debug.Assert(!(bpImpl is null)); if (bpImpl is null) continue; Debug.Assert(breakpoints.Contains(bpImpl)); if (!breakpoints.Contains(bpImpl)) continue; var currentSettings = bpImpl.Settings; if (currentSettings == info.Settings) continue; bps.Add(new DbgCodeBreakpointAndOldSettings(bpImpl, currentSettings)); if (bpImpl.WriteSettings_DbgThread(info.Settings)) { if (updatedBreakpoints is null) updatedBreakpoints = new List<DbgCodeBreakpointImpl>(settings.Length); updatedBreakpoints.Add(bpImpl); } } } if (bps.Count > 0) BreakpointsModified?.Invoke(this, new DbgBreakpointsModifiedEventArgs(new ReadOnlyCollection<DbgCodeBreakpointAndOldSettings>(bps))); if (!(updatedBreakpoints is null)) { foreach (var bp in updatedBreakpoints) bp.RaiseBoundBreakpointsMessageChanged_DbgThread(); BoundBreakpointsMessageChanged?.Invoke(this, new DbgBoundBreakpointsMessageChangedEventArgs(new ReadOnlyCollection<DbgCodeBreakpoint>(updatedBreakpoints.ToArray()))); } }
void DbgCodeBreakpointsService_BreakpointsModified(object sender, DbgBreakpointsModifiedEventArgs e) => BreakpointsModified?.Invoke(this, e);