Two suggestions

  1. Remove the Dispose method
  2. In the code which does the AddHandler first do a RemoveHandler for each AddHandler.