EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) 方法

定义

写入一个指示当前活动与其他活动相关的事件。Writes an event that indicates that the current activity is related to another activity.

protected:
 void WriteEventWithRelatedActivityId(int eventId, Guid relatedActivityId, ... cli::array <System::Object ^> ^ args);
protected:
 void WriteEventWithRelatedActivityId(int eventId, Guid childActivityID, ... cli::array <System::Object ^> ^ args);
protected void WriteEventWithRelatedActivityId (int eventId, Guid relatedActivityId, params object[] args);
protected void WriteEventWithRelatedActivityId (int eventId, Guid relatedActivityId, params object?[] args);
protected void WriteEventWithRelatedActivityId (int eventId, Guid childActivityID, params object[] args);
member this.WriteEventWithRelatedActivityId : int * Guid * obj[] -> unit
member this.WriteEventWithRelatedActivityId : int * Guid * obj[] -> unit
Protected Sub WriteEventWithRelatedActivityId (eventId As Integer, relatedActivityId As Guid, ParamArray args As Object())
Protected Sub WriteEventWithRelatedActivityId (eventId As Integer, childActivityID As Guid, ParamArray args As Object())

参数

eventId
Int32

EventSource 中唯一标识此事件的标识符。An identifier that uniquely identifies this event within the EventSource.

relatedActivityIdchildActivityID
Guid

相关的活动标识符。The related activity identifier.

args
Object[]

包含与事件相关的数据的对象数组。An array of objects that contain data about the event.

示例

下面的代码示例演示如何指定调用的事件源 WriteEventWithRelatedActivityIdThe following code example shows how you might can specify an event source that calls WriteEventWithRelatedActivityId.

[EventSource(Name = "Litware-ProductName-ComponentName")]
public sealed class LitwareComponentNameEventSource : EventSource
{
    [Event(1, Task = Tasks.Request, Opcode = EventOpcode.Send)]
    public void RequestStart(Guid relatedActivityId, int reqId, string url)
    {
        WriteEventWithRelatedActivityId(1, relatedActivityId, reqId, url);
    }
}

<EventSource(Name:="Litware-ProductName-ComponentName")> _
Public NotInheritable Class LitwareComponentNameEventSource
    Inherits EventSource
    <[Event](1, Task:=Tasks.Request, Opcode:=EventOpcode.Send)> _
    Public Sub RequestStart(relatedActivityId As Guid, reqId As Integer, url As String)
        WriteEventWithRelatedActivityId(1, relatedActivityId, reqId, url)
    End Sub

End Class

[EventSource(Name = "Contoso-ProductName-ComponentName")]
public sealed class CustomizedForPerfEventSource : EventSource
{
    [Event(1, Task = Tasks.Request, Opcode = EventOpcode.Send)]
    public void RequestStart(Guid relatedActivityId, int reqId, string url)
    {
        if (IsEnabled())
            WriteEventWithRelatedActivityId(1, relatedActivityId, reqId, url);
    }

    [NonEvent]
    unsafe protected void WriteEventWithRelatedActivityId(int eventId, Guid relatedActivityId,
                    int arg1, string arg2)
    {
        if (IsEnabled())
        {
            if (arg2 == null) arg2 = string.Empty;
            fixed (char* stringBytes = arg2)
            {
                EventData* descrs = stackalloc EventData[2];
                descrs[0].DataPointer = (IntPtr)(&arg1);
                descrs[0].Size = 4;
                descrs[1].DataPointer = (IntPtr)stringBytes;
                descrs[1].Size = ((arg2.Length + 1) * 2);
                WriteEventWithRelatedActivityIdCore(eventId,
                &relatedActivityId, 2, descrs);
            }
        }
    }

注解

WriteEventWithRelatedActivityId方法记录传输事件。The WriteEventWithRelatedActivityId method logs a transfer event. 当前线程的活动记录事件,这允许两个活动通过事件的使用者进行关联。The activity of the current thread is logged with the event, and this allows two activities to be related by a consumer of events.

调用此函数的 ETW 事件方法必须遵循以下准则:Your ETW event method calling this function must follow these guidelines:

  1. 将第一个参数指定为 Guid 名为的 relatedActivityIdSpecify the first parameter as a Guid named relatedActivityId.

  2. Send将或指定 ReceiveEventAttribute.Opcode 属性。Specify either Send or Receive as the EventAttribute.Opcode property.

  3. 调用 WriteEventWithRelatedActivityId 传入事件 id,后跟相关 ID GUID,后跟以相同顺序传递的事件方法的所有参数。Call WriteEventWithRelatedActivityId passing in the event ID, followed by the related ID GUID, followed by all the parameters the event method is passed, in the same order.

如果 args 未使用,则会将其转换为空数组,以便对 ETW 进行调用。If args is not used, it is converted to an empty array for the resulting call to ETW.

适用于