Solved! Go to Solution.
I noticed the same behavior. It should work by firing the MapItemChanged event with "Removing", remove the item, then fire MapItemChange with "Removed."
But since it doesn't, you can create a System.Windows.Forms.Timer to check Application.IsDocumentDirty and call Application.SaveDocument at a specified Timer interval.
You can also create a handler for Application.DocumentClosed (which will fire upon document closing and application exiting) check Application.IsDocumentDirty and call Application.SaveDocument.