Aracılığıyla paylaş


EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) Yöntem

Tanım

Geçerli etkinliğin başka bir etkinlikle ilişkili olduğunu belirten bir olay yazar.

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

Parametreler

eventId
Int32

içinde EventSourcebu olayı benzersiz olarak tanımlayan bir tanımlayıcı.

relatedActivityIdchildActivityID
Guid

İlgili etkinlik tanımlayıcısı.

args
Object[]

Olay hakkında veri içeren bir nesne dizisi.

Örnekler

Aşağıdaki kod örneği, çağıran WriteEventWithRelatedActivityIdbir olay kaynağını nasıl belirtebileceğinizi gösterir.

[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);
            }
        }
    }

Açıklamalar

WriteEventWithRelatedActivityId yöntemi bir aktarım olayını günlüğe kaydeder. Geçerli iş parçacığının etkinliği olayla günlüğe kaydedilir ve bu, iki etkinliğin bir olay tüketicisi tarafından ilişkilendirilmesine olanak tanır.

Bu işlevi çağıran ETW olay yönteminiz şu yönergeleri izlemelidir:

  1. İlk parametreyi adlandırılmış relatedActivityIdolarak Guid belirtin.

  2. Send Özellik olarak veya Receive belirtinEventAttribute.Opcode.

  3. Olay WriteEventWithRelatedActivityId kimliğinde çağrı geçirme, ardından ilgili kimlik GUID'si ve ardından olay yönteminin geçirilme sırasına göre tüm parametreler.

Kullanılmazsa args , ETW'ye yapılan sonuç çağrısı için boş bir diziye dönüştürülür.

Şunlara uygulanır