Поделиться через


Класс System.Diagnostics.Tracing.EventWrittenEventArgs

В этой статье приводятся дополнительные замечания к справочной документации по этому API.

Класс EventWrittenEventArgs предоставляет данные для обратного OnEventWritten вызова.

Всякий раз, когда событие отправляется в EventListener объект, метод обратного вызова EventListener.OnEventWritten вызывается. Передается экземпляр EventWrittenEventArgs, содержащий информацию о событии. Все значения EventWrittenEventArgs свойств класса допустимы только во время обратного вызова.

В следующих разделах содержатся дополнительные сведения об отдельных EventWrittenEventArgs свойствах.

Свойство ActivityId

При использовании System.Activities.Activity и производных классах потоки можно пометить как связанные с ними действия. Свойство ActivityId возвращает идентификатор действия потока, который зарегистрировал событие. Обратите внимание, что потоки не обязательно должны иметь активность, в этом случае это свойство принимает значение Guid.Empty.

Свойства OSThreadId и TimeStamp

Начиная с .NET Core 2.2, объекты EventListener могут подписываться на события собственной среды выполнения (например, события GC, JIT и threadpool), а также на события, создаваемые объектами EventSource. В предыдущих версиях .NET Core и всех версиях .NET Framework идентификатор потока и метка времени можно извлечь из среды, так как они отправляются синхронно в том же потоке, который их генерировал. Однако не все события собственной среды выполнения могут быть синхронно отправлены. Некоторые события, такие как события GC, создаются при приостановке выполнения управляемого потока. Эти события буферизируются в родном коде и отправляются диспетчерским потоком, как только управляемый код может быть выполнен снова. Так как эти события буферичены, среда не может использоваться для надежного получения идентификатора потока и метки времени. Из-за этого, начиная с .NET Core 2.2, идентификатор потока и метки времени доступны как члены EventWrittenEventArgs класса.

Свойство RelatedActivityId

Связанное действие — это действие, которое сильно связано с текущим. Как правило, это либо активность, которая предшествовала текущей активности (события с Start опкодом обычно делают это), либо активность, созданная текущей (события с Send опкодом обычно делают это). Когда RelatedActivityID используется, он явно передаётся методом, который выполняет ведение журнала. Многие события не проходят RelatedActivityId, в этом случае значение этого свойства равно Guid.Empty.