次の方法で共有


System.Diagnostics.Tracing.EventWrittenEventArgs クラス

この記事では、この API のリファレンス ドキュメントに補足的な解説を提供します。

EventWrittenEventArgs クラスは、OnEventWritten コールバックのデータを提供します。

イベントが EventListenerにディスパッチされるたびに、 EventListener.OnEventWritten コールバック メソッドが呼び出されます。 イベントに関連付けられた情報を含む EventWrittenEventArgs インスタンスが渡されます。 EventWrittenEventArgs クラスのすべてのプロパティ値は、コールバック中にのみ有効です。

次のセクションでは、個々の EventWrittenEventArgs プロパティに関する追加情報を示します。

ActivityId プロパティ

System.Activities.Activityとその派生クラスを使用する場合、スレッドはアクティビティが関連付けられているものとしてマークできます。 ActivityId プロパティは、イベントをログに記録したスレッドのアクティビティ ID を返します。 スレッドはアクティビティを持つ必要はありません。この場合、このプロパティは Guid.Emptyを返します。

OSThreadId プロパティと TimeStamp プロパティ

.NET Core 2.2 以降では、 EventListener オブジェクトは、 EventSource オブジェクトによって生成されるイベントに加えて、ネイティブ ランタイム イベント (GC、JIT、スレッドプール イベントなど) をサブスクライブできます。 以前のバージョンの .NET Core および .NET Framework のすべてのバージョンでは、スレッド ID とタイムスタンプは環境から収集できます。これは、スレッド ID とタイムスタンプが生成されたのと同じスレッドに同期的にディスパッチされるためです。 ただし、すべてのネイティブ ランタイム イベントを同期的にディスパッチできるわけではありません。 GC イベントなどの一部のイベントは、マネージド スレッドの実行が中断されたときに生成されます。 これらのイベントはネイティブ コードでバッファー処理され、マネージド コードが再度実行されるとディスパッチャー スレッドによってディスパッチされます。 これらのイベントはバッファー処理されるため、環境を使用してスレッド ID とタイムスタンプを確実に取得することはできません。 このため、.NET Core 2.2 以降では、スレッド ID とタイムスタンプ情報は、 EventWrittenEventArgs クラスのメンバーとして使用できます。

RelatedActivityId プロパティ

関連アクティビティは、現在のアクティビティに強く関連するアクティビティです。 通常は、現在のアクティビティ (通常は Start オペコードを含むイベント) を発生させたアクティビティか、現在のアクティビティによって作成されたアクティビティ (通常は、 Send オペコードを含むイベント) です。 これを使用すると、 RelatedActivityID はログ記録を実行するメソッドによって明示的に渡されます。 多くのイベントは RelatedActivityIdを渡しません。この場合、このプロパティは Guid.Emptyを返します。