Teilen über


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

Definition

Schreibt ein Ereignis, die angibt, dass die aktuelle Aktivität mit einer andere Aktivität in Beziehung steht.

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())

Parameter

eventId
Int32

Ein Bezeichner, der dieses Ereignis eindeutig in der EventSource identifiziert.

relatedActivityIdchildActivityID
Guid

Der verknüpfte Aktivitätsbezeichner.

args
Object[]

Ein Array von Objekten, die Daten zum Ereignis enthalten.

Beispiele

Das folgende Codebeispiel zeigt, wie Sie eine Ereignisquelle angeben können, die aufruft 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);
            }
        }
    }

Hinweise

Die WriteEventWithRelatedActivityId -Methode protokolliert ein Übertragungsereignis. Die Aktivität des aktuellen Threads wird mit dem Ereignis protokolliert, sodass zwei Aktivitäten von einem Consumer von Ereignissen verknüpft werden können.

Ihre ETW-Ereignismethode, die diese Funktion aufruft, muss die folgenden Richtlinien befolgen:

  1. Geben Sie den ersten Parameter als namen GuidrelatedActivityIdan.

  2. Geben Sie entweder Send oder Receive als Eigenschaft an EventAttribute.Opcode .

  3. Rufen Sie WriteEventWithRelatedActivityId die Ereignis-ID auf, gefolgt von der zugehörigen ID-GUID, gefolgt von allen Parametern, die die Ereignismethode übergeben wird, in der gleichen Reihenfolge.

Wenn args es nicht verwendet wird, wird es für den resultierenden Aufruf von ETW in ein leeres Array konvertiert.

Gilt für: