EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) Метод

Определение

Записывает событие, указывающее, что текущее действие связано с другим действием.

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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type")]
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
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("EventSource will serialize the whole object graph. Trimmer will not safely handle this case because properties may be trimmed. This can be suppressed if the object is a primitive type")>]
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.

relatedActivityIdchildActivityID
Guid

Идентификатор связанного действия.

args
Object[]

Массив объектов, содержащих данные о событии.

Атрибуты

Примеры

В следующем примере кода показано, как можно указать источник событий, который вызывает 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 регистрирует событие передачи. Действие текущего потока регистрируется в журнале с событием, и это позволяет двум действиям быть связанными потребителем событий.

Метод событий ETW, вызывающий эту функцию, должен соответствовать следующим рекомендациям:

  • Укажите первый параметр как именованный GuidrelatedActivityId.
  • Укажите или SendReceive как EventAttribute.Opcode свойство.
  • Вызов WriteEventWithRelatedActivityId , передаваемый идентификатором события, а затем соответствующим идентификатором GUID, за которым следует все параметры метода события, передаются в том же порядке.

Если args он не используется, он преобразуется в пустой массив для результирующего вызова в ETW.

Применяется к