Even if Dispose is called more than once, this _disposed variable seems completely unnecessary. If _disposed is true, then _timer must be null. In which case, this method will no-op anyway.