Comportamiento de devolución de llamada de EventSource

Para EventCommand.Disable, EventSource ahora se marca como deshabilitado antes de que se emita la devolución de llamada.

Comportamiento anterior

Anteriormente, la devolución de llamada EventSource.OnEventCommand(EventCommandEventArgs) se emitía para EventCommand.Disable antes de establecer m_eventSourceEnabled=false.

Esto significaba que EventSource.IsEnabled() devolvía true en la devolución de llamada OnEventCommand(EventCommandEventArgs) de un usuario EventSource, incluso si el comando provocaba que EventSource se deshabilitase. La devolución de llamada se producía después de desactivar la capacidad de enviar eventos, por lo que incluso si EventSource intentaba desencadenar un evento, no se escribía.

Comportamiento nuevo

Ahora, EventSource se marca como deshabilitado antes de que se emita la devolución de llamada para EventCommand.Disable.

Versión introducida

  • Mantenimiento de .NET 6
  • Mantenimiento de .NET 7

Tipo de cambio importante

Este es un cambio de comportamiento.

Motivo del cambio

Este cambio era necesario para admitir varias instancias de EventCounter. Varios clientes han solicitado la capacidad de tener varias instancias.

Además, EventCommand.Enable siempre ha emitido una vista coherente: EventSource.IsEnabled() informa con precisión del estado habilitado y EventSource puede escribir eventos de la devolución de llamada OnEventCommand. Este cambio hace que el comportamiento de EventCommand.Disable sea coherente con EventCommand.Enable.

Es poco probable que haya un escenario en el que se prefiera el comportamiento anterior y no hay ninguna manera de revertir el comportamiento.

API afectadas