Also if this can be disposed more than once then you should also assume it could be racey and should put a lock around this method to ensure that the client doesn't blow up (race when _timer is null and it calls Dispose for a second time).  Of course ignore this comment if Dispose will not be called more than once.