EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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:
Geben Sie den ersten Parameter als namen Guid
relatedActivityId
an.Geben Sie entweder Send oder Receive als Eigenschaft an EventAttribute.Opcode .
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.