EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) 方法

定義

寫入表示目前活動與另一個活動有關的事件。Writes an event that indicates that the current activity is related to another activity.

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

參數

eventId
Int32

可在 EventSource 中唯一識別這個事件的識別項。An identifier that uniquely identifies this event within the EventSource.

relatedActivityIdchildActivityID
Guid

相關的活動識別項。The related activity identifier.

args
Object[]

包含事件相關資料的物件陣列。An array of objects that contain data about the event.

範例

下列程式碼範例會示範如何指定呼叫的事件來源 WriteEventWithRelatedActivityIdThe following code example shows how you might can specify an event source that calls 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方法會記錄傳輸事件。The WriteEventWithRelatedActivityId method logs a transfer event. 目前線程的活動會與事件一起記錄,這可讓兩個活動由事件取用者相關聯。The activity of the current thread is logged with the event, and this allows two activities to be related by a consumer of events.

呼叫此函式的 ETW 事件方法必須遵循下列指導方針:Your ETW event method calling this function must follow these guidelines:

  1. 將第一個參數指定為 Guid 名為的 relatedActivityIdSpecify the first parameter as a Guid named relatedActivityId.

  2. 請指定 SendReceive 做為 EventAttribute.Opcode 屬性。Specify either Send or Receive as the EventAttribute.Opcode property.

  3. 呼叫 WriteEventWithRelatedActivityId 傳入事件識別碼,後面接著相關的識別碼 GUID,然後以相同順序傳遞事件方法的所有參數。Call WriteEventWithRelatedActivityId passing in the event ID, followed by the related ID GUID, followed by all the parameters the event method is passed, in the same order.

如果 args 未使用,則會將它轉換成空白陣列,以產生 ETW 的呼叫。If args is not used, it is converted to an empty array for the resulting call to ETW.

適用於