EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) Method

定義

現在のアクティビティが別のアクティビティに関連していることを示すイベントを書き込みます。Writes an event that indicates that the current activity is related to another activity.

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

パラメーター

eventId
Int32 Int32 Int32 Int32

EventSource のこのイベントを一意に識別する識別子。An identifier that uniquely identifies this event within the EventSource.

relatedActivityId
Guid Guid Guid Guid

関連するアクティビティ識別子。The related activity identifier.

args
Object[]

イベント データを格納するオブジェクトの配列。An array of objects that contain data about the event.

次のコード例は、可能性がありますを指定する方法を呼び出すイベント ソースを示しています。WriteEventWithRelatedActivityIdします。The 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. イベントでは、現在のスレッドのアクティビティが記録し、これにより、2 つのアクティビティ イベントのコンシューマーによって関連します。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というrelatedActivityIdします。Specify the first parameter as a Guid named relatedActivityId.

  2. いずれかを指定SendまたはReceiveとして、EventAttribute.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.

適用対象