Returning an event_token from the single‑parameter registration overload exists to support classes that do not implement IWeakReference or it is used to register a delegate in one event and unregister it in another event. However, because event_token itself merely stores an integer, unregistering a delegate via event_token is exception‑unsafe.
Solution:
Add an overload (winrt::auto_revoke_strong, Handler). This new overload returns a Revoker that holds a strong reference to this, making it work with any COM object.
Returning an event_token from the single‑parameter registration overload exists to support classes that do not implement IWeakReference or it is used to register a delegate in one event and unregister it in another event. However, because event_token itself merely stores an integer, unregistering a delegate via event_token is exception‑unsafe.
Solution:
Add an overload (winrt::auto_revoke_strong, Handler). This new overload returns a Revoker that holds a strong reference to this, making it work with any COM object.