You should call this method before making any changes for which the call to RaiseChanged does not have the complete previous (old) state. You should also implement CopyOldValueForUndo and CopyNewValueForRedo to record the state information for the particular hint passed to this method. When the call to RaiseChanged has the complete before-and-after state as arguments, calling this method is not necessary. You will typically call RaiseChanging followed by a call to RaiseChanged when making a bunch of changes while SuspendsUpdates is true, if you still want to maintain the ability to undo and redo all of those changes.