EventSource.WriteEventWithRelatedActivityId(Int32, Guid, Object[]) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Escreve um evento que indica que a atividade atual está relacionada com outra atividade.
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 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())
Parâmetros
- eventId
- Int32
Um identificador que identifica de forma única este evento dentro do EventSource.
- relatedActivityIdchildActivityID
- Guid
O identificador de atividade relacionado.
- args
- Object[]
Um conjunto de objetos que contêm dados sobre o evento.
Exemplos
O exemplo de código seguinte mostra como pode especificar uma fonte de evento que chama 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);
}
}
}
Observações
O WriteEventWithRelatedActivityId método regista um evento de transferência. A atividade do tópico atual é registada com o evento, o que permite que um consumidor de eventos relacione duas atividades.
O seu método de evento ETW que chama esta função deve seguir estas diretrizes:
- Especifique o primeiro parâmetro como um Guid .
relatedActivityId - Especifique qualquer um Send dos ou Receive como propriedade EventAttribute.Opcode .
- A passagem da chamada WriteEventWithRelatedActivityId no ID do evento, seguida do ID GUID relacionado, seguido de todos os parâmetros que o método do evento é passado, na mesma ordem.
Se args não for usado, é convertido para um array vazio para a chamada resultante para ETW.