EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) Méthode

Définition

Écrit un événement qui indique que l'activité actuelle est liée à une autre activité.

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

Paramètres

eventId
Int32

Identificateur qui identifie de manière unique cet événement au sein de l'objet EventSource.

relatedActivityIdchildActivityID
Guid

Identificateur d'activité associé.

args
Object[]

Tableau d'objets qui contient les données relatives à l'événement.

Exemples

L’exemple de code suivant montre comment vous pouvez spécifier une source d’événement qui appelle 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);
            }
        }
    }

Remarques

La WriteEventWithRelatedActivityId méthode enregistre un événement de transfert. L’activité du thread actuel est journalisée avec l’événement, ce qui permet à deux activités d’être liées par un consommateur d’événements.

Votre méthode d’événement ETW appelant cette fonction doit suivre ces instructions :

  1. Spécifiez le premier paramètre sous la forme d’un Guid nom relatedActivityId.

  2. Spécifiez l’une Send ou Receive l’autre EventAttribute.Opcode comme propriété.

  3. Appelez WriteEventWithRelatedActivityId le passage de l’ID d’événement, suivi du GUID d’ID associé, suivi de tous les paramètres que la méthode d’événement est passée, dans le même ordre.

S’il args n’est pas utilisé, il est converti en tableau vide pour l’appel résultant en ETW.

S’applique à