Share via


EventSource コールバックの動作

EventCommand.Disable の場合、コールバックが発行される "前に"、EventSource が無効としてマークされるようになりました。

以前の動作

以前は、m_eventSourceEnabled=false を設定する前に、EventCommand.Disable に対して EventSource.OnEventCommand(EventCommandEventArgs) コールバックが発行されていました。

これは、コマンドによって EventSource が無効になった場合でも、ユーザー EventSourceOnEventCommand(EventCommandEventArgs) コールバックで EventSource.IsEnabled() により true が返されることを意味します。 しかし、コールバックはイベントをディスパッチする機能がオフになった後に発生したため、EventSource によりイベントの発生が試みられても、それは書き込まれませんでした。

新しい動作

これで、コールバックが EventCommand.Disable に対して発行される "前に"、EventSource が無効としてマークされます。

導入されたバージョン

  • .NET 6 サービス
  • .NET 7 サービス

破壊的変更の種類

この変更は、動作変更です。

変更理由

この変更は、複数の EventCounter インスタンスをサポートするために必要でした。 複数のインスタンスを持つ機能は、複数のお客様からのご要望をいただいていました。

さらに、EventCommand.Enable は常に一貫性のあるビューを発行してきました。EventSource.IsEnabled() により有効な状態が正確に報告され、EventSourceOnEventCommand コールバックからイベントを書き込むことができます。 この変更により、EventCommand.Disable の動作が EventCommand.Enable と一致します。

以前の動作が望ましいシナリオがあり、動作を元に戻す方法がないという可能性はほとんどありません。

影響を受ける API