EventSource Klas

Definitie

Biedt de mogelijkheid om gebeurtenissen te maken voor gebeurtenistracering op verschillende platforms.

public ref class EventSource : IDisposable
public class EventSource : IDisposable
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes)]
public class EventSource : IDisposable
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
public class EventSource : IDisposable
type EventSource = class
    interface IDisposable
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes)>]
type EventSource = class
    interface IDisposable
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
type EventSource = class
    interface IDisposable
Public Class EventSource
Implements IDisposable
Overname
EventSource
Afgeleid
Kenmerken
Implementeringen

Voorbeelden

In het volgende voorbeeld ziet u een eenvoudige implementatie van de EventSource klasse.

using System.Diagnostics.Tracing;

namespace Demo
{
    sealed class MyCompanyEventSource : EventSource
    {
        public static MyCompanyEventSource Log = new MyCompanyEventSource();

        public void Startup() { WriteEvent(1); }
        public void OpenFileStart(string fileName) { WriteEvent(2, fileName); }
        public void OpenFileStop() { WriteEvent(3); }
    }

    class Program
    {
        static void Main(string[] args)
        {
            MyCompanyEventSource.Log.Startup();
            // ...
            MyCompanyEventSource.Log.OpenFileStart("SomeFile");
            // ...
            MyCompanyEventSource.Log.OpenFileStop();
        }
    }
}
Imports System.Diagnostics.Tracing

Class MyCompanyEventSource
    Inherits EventSource
    Public Shared Log As New MyCompanyEventSource()

    Public Sub Startup()
        WriteEvent(1)
    End Sub

    Public Sub OpenFileStart(ByVal fileName As String)
        WriteEvent(2, fileName)
    End Sub

    Public Sub OpenFileStop()
        WriteEvent(3)
    End Sub
End Class

Class Program

    Shared Sub Main(ByVal args() As String)
        MyCompanyEventSource.Log.Startup()
        ' ...
        MyCompanyEventSource.Log.OpenFileStart("SomeFile")
        ' ...
        MyCompanyEventSource.Log.OpenFileStop()

    End Sub
End Class

In het volgende voorbeeld ziet u een complexere implementatie van de EventSource klasse.

using System.Diagnostics.Tracing;

namespace Demo1
{
    sealed class MyCompanyEventSource : EventSource
    {
        public static MyCompanyEventSource Log = new MyCompanyEventSource();

        public void Startup() { WriteEvent(1); }
        public void OpenFileStart(string fileName) { WriteEvent(2, fileName); }
        public void OpenFileStop() { WriteEvent(3); }
    }

    class Program
    {
        static void Main(string[] args)
        {
            MyCompanyEventSource.Log.Startup();
            // ...
            MyCompanyEventSource.Log.OpenFileStart("SomeFile");
            // ...
            MyCompanyEventSource.Log.OpenFileStop();
        }
    }
}
Imports System.Diagnostics.Tracing

Enum MyColor
    Red
    Yellow
    Blue
End Enum 'MyColor
<EventSource(Name:="MyCompany")>
Class MyCompanyEventSource1
    Inherits EventSource

    Public Class Keywords
        Public Const Page As EventKeywords = CType(1, EventKeywords)
        Public Const DataBase As EventKeywords = CType(2, EventKeywords)
        Public Const Diagnostic As EventKeywords = CType(4, EventKeywords)
        Public Const Perf As EventKeywords = CType(8, EventKeywords)
    End Class

    Public Class Tasks
        Public Const Page As EventTask = CType(1, EventTask)
        Public Const DBQuery As EventTask = CType(1, EventTask)
    End Class

    <[Event](1, Message:="Application Failure: {0}", Level:=EventLevel.Error, Keywords:=Keywords.Diagnostic)>
    Public Sub Failure(ByVal message As String)
        WriteEvent(1, message)
    End Sub

    <[Event](2, Message:="Starting up.", Keywords:=Keywords.Perf, Level:=EventLevel.Informational)>
    Public Sub Startup()
        WriteEvent(2)
    End Sub

    <[Event](3, Message:="loading page {1} activityID={0}", Opcode:=EventOpcode.Start, Task:=Tasks.Page, Keywords:=Keywords.Page, Level:=EventLevel.Informational)>
    Public Sub PageStart(ByVal ID As Integer, ByVal url As String)
        If IsEnabled() Then
            WriteEvent(3, ID, url)
        End If
    End Sub

    <[Event](4, Opcode:=EventOpcode.Stop, Task:=Tasks.Page, Keywords:=Keywords.Page, Level:=EventLevel.Informational)>
    Public Sub PageStop(ByVal ID As Integer)
        If IsEnabled() Then
            WriteEvent(4, ID)
        End If
    End Sub

    <[Event](5, Opcode:=EventOpcode.Start, Task:=Tasks.DBQuery, Keywords:=Keywords.DataBase, Level:=EventLevel.Informational)>
    Public Sub DBQueryStart(ByVal sqlQuery As String)
        WriteEvent(5, sqlQuery)
    End Sub

    <[Event](6, Opcode:=EventOpcode.Stop, Task:=Tasks.DBQuery, Keywords:=Keywords.DataBase, Level:=EventLevel.Informational)>
    Public Sub DBQueryStop()
        WriteEvent(6)
    End Sub

    <[Event](7, Level:=EventLevel.Verbose, Keywords:=Keywords.DataBase)>
    Public Sub Mark(ByVal ID As Integer)
        If IsEnabled() Then
            WriteEvent(7, ID)
        End If
    End Sub

    <[Event](8)>
    Public Sub LogColor(ByVal color As MyColor)
        WriteEvent(8, Fix(color))
    End Sub
    Public Shared Log As New MyCompanyEventSource1()
End Class

Class Program1

    Shared Sub Main(ByVal args() As String)
        MyCompanyEventSource1.Log.Startup()
        Console.WriteLine("Starting up")
        MyCompanyEventSource1.Log.DBQueryStart("Select * from MYTable")
        Dim url As String = "http:'localhost"
        Dim i As Integer
        For i = 0 To 9
            MyCompanyEventSource1.Log.PageStart(i, url)
            MyCompanyEventSource1.Log.Mark(i)
            MyCompanyEventSource1.Log.PageStop(i)
        Next i
        MyCompanyEventSource1.Log.DBQueryStop()
        MyCompanyEventSource1.Log.LogColor(MyColor.Blue)

        MyCompanyEventSource1.Log.Failure("This is a failure 1")
        MyCompanyEventSource1.Log.Failure("This is a failure 2")
        MyCompanyEventSource1.Log.Failure("This is a failure 3")
    End Sub
End Class

Geavanceerd gebruik

Traditioneel verwachten gebruikersgedefinieerde EventSource objecten rechtstreeks van EventSource te erven. Voor geavanceerde scenario's kunt u echter objecten maken abstractEventSource , hulpprogrammabronnen genoemd en interfaces implementeren. Met een of beide technieken kunt u code delen tussen verschillende afgeleide bronnen.

Important

Abstracte EventSource objecten kunnen geen trefwoorden, taken, opcodes, kanalen of gebeurtenissen definiëren.

Important

Als u naamconflicten tijdens runtime wilt voorkomen bij het genereren van metagegevens van gebeurtenissen, moet u geen interfacemethoden expliciet implementeren bij het gebruik van interfaces met EventSource.

In het volgende voorbeeld ziet u een implementatie van EventSource die gebruikmaakt van een interface.

public interface IMyLogging
{
    void Error(int errorCode, string message);
    void Warning(string message);
}

public sealed class MySource : EventSource, IMyLogging
{
    public static MySource Log = new();

    [Event(1)]
    public void Error(int errorCode, string message) => WriteEvent(1, errorCode, message);

    [Event(2)]
    public void Warning(string message) => WriteEvent(2, message);
}

In het volgende voorbeeld ziet u een implementatie van EventSource die gebruikmaakt van het Utility EventSource-patroon.

public abstract class UtilBaseEventSource : EventSource
{
    protected UtilBaseEventSource()
        : base()
    { }

    protected UtilBaseEventSource(bool throwOnEventWriteErrors)
        : base(throwOnEventWriteErrors)
    { }

    // helper overload of WriteEvent for optimizing writing an event containing
    // payload properties that don't align with a provided overload. This prevents
    // EventSource from using the object[] overload which is expensive.
    protected unsafe void WriteEvent(int eventId, int arg1, short arg2, long arg3)
    {
        if (IsEnabled())
        {
            EventSource.EventData* descrs = stackalloc EventSource.EventData[3];
            descrs[0] = new EventData { DataPointer = (IntPtr)(&arg1), Size = 4 };
            descrs[1] = new EventData { DataPointer = (IntPtr)(&arg2), Size = 2 };
            descrs[2] = new EventData { DataPointer = (IntPtr)(&arg3), Size = 8 };
            WriteEventCore(eventId, 3, descrs);
        }
    }
}

public sealed class OptimizedEventSource : UtilBaseEventSource
{
    public static OptimizedEventSource Log = new();

    public static class Keywords
    {
        public const EventKeywords Kwd1 = (EventKeywords)1;
    }

    [Event(1, Keywords = Keywords.Kwd1, Level = EventLevel.Informational, Message = "LogElements called {0}/{1}/{2}.")]
    public void LogElements(int n, short sh, long l) => WriteEvent(1, n, sh, l); // uses the overload we added!
}

In het volgende voorbeeld ziet u een implementatie van EventSource om informatie over een component in een bibliotheek te traceren.

public class ComplexComponent : IDisposable
{
    internal static Dictionary<string, string> _internalState = new();

    private string _name;

    public ComplexComponent(string name)
    {
        _name = name ?? throw new ArgumentNullException(nameof(name));
        ComplexSource.Log.NewComponent(_name);
    }

    public void SetState(string key, string value)
    {
        lock (_internalState)
        {
            _internalState[key] = value;
            ComplexSource.Log.SetState(_name, key, value);
        }
    }

    private void ExpensiveWork1() => System.Threading.Thread.Sleep(TimeSpan.FromMilliseconds(250));
    private void ExpensiveWork2() => System.Threading.Thread.Sleep(TimeSpan.FromMilliseconds(250));
    private void ExpensiveWork3() => System.Threading.Thread.Sleep(TimeSpan.FromMilliseconds(250));
    private void ExpensiveWork4() => System.Threading.Thread.Sleep(TimeSpan.FromMilliseconds(250));

    public void DoWork()
    {
        ComplexSource.Log.ExpensiveWorkStart(_name);

        ExpensiveWork1();
        ExpensiveWork2();
        ExpensiveWork3();
        ExpensiveWork4();

        ComplexSource.Log.ExpensiveWorkStop(_name);
    }

    public void Dispose()
    {
        ComplexSource.Log.ComponentDisposed(_name);
    }
}

internal sealed class ComplexSource : EventSource
{
    public static ComplexSource Log = new();

    public static class Keywords
    {
        public const EventKeywords ComponentLifespan = (EventKeywords)1;
        public const EventKeywords StateChanges = (EventKeywords)(1 << 1);
        public const EventKeywords Performance = (EventKeywords)(1 << 2);
        public const EventKeywords DumpState = (EventKeywords)(1 << 3);
        // A utility keyword for a common combination of
        // keywords users might enable.
        public const EventKeywords StateTracking = ComponentLifespan | StateChanges | DumpState;
    }

    protected override void OnEventCommand(EventCommandEventArgs args)
    {
        base.OnEventCommand(args);

        if (args.Command == EventCommand.Enable)
        {
            DumpComponentState();
        }
    }

    [Event(1, Keywords = Keywords.ComponentLifespan, Message = "New component with name '{0}'.")]
    public void NewComponent(string name) => WriteEvent(1, name);

    [Event(2, Keywords = Keywords.ComponentLifespan, Message = "Component with name '{0}' disposed.")]
    public void ComponentDisposed(string name) => WriteEvent(2, name);

    [Event(3, Keywords = Keywords.StateChanges)]
    public void SetState(string name, string key, string value) => WriteEvent(3, name, key, value);

    [Event(4, Keywords = Keywords.Performance)]
    public void ExpensiveWorkStart(string name) => WriteEvent(4, name);

    [Event(5, Keywords = Keywords.Performance)]
    public void ExpensiveWorkStop(string name) => WriteEvent(5, name);

    [Event(6, Keywords = Keywords.DumpState)]
    public void ComponentState(string key, string value) => WriteEvent(6, key, value);

    [NonEvent]
    public void DumpComponentState()
    {
        if (IsEnabled(EventLevel.Informational, Keywords.DumpState))
        {
            lock (ComplexComponent._internalState)
            {
                foreach (var (key, value) in ComplexComponent._internalState)
                    ComponentState(key, value);
            }
        }
    }
}

Opmerkingen

De EventSource klasse is bedoeld om te worden overgenomen door een gebruikersklasse die specifieke gebeurtenissen biedt die moeten worden gebruikt voor gebeurtenistracering. De EventSource.WriteEvent methoden worden aangeroepen om de gebeurtenissen te registreren.

De basisfunctionaliteit van EventSource is voldoende voor de meeste toepassingen. Als u meer controle wilt over de metagegevens van gebeurtenissen die zijn gemaakt, kunt u het EventAttribute kenmerk toepassen op de methoden. Voor geavanceerde gebeurtenisbrontoepassingen is het mogelijk om de opdrachten die worden verzonden naar de afgeleide gebeurtenisbron te onderscheppen en het filteren te wijzigen, of om ervoor te zorgen dat acties (zoals het dumpen van een gegevensstructuur) door de overnemende gebruiker worden uitgevoerd. Een gebeurtenisbron kan in-process worden geactiveerd met behulp van EventListener, en out-of-process met EventPipe-hulpprogramma's, zoals dotnet-trace of ETW-hulpprogramma's zoals PerfView of Logman. Het is ook mogelijk programmatisch te beheren en de gegevenszender te onderscheppen. De EventListener klasse biedt extra functionaliteit.

Conventions

EventSource-afgeleide klassen moeten de volgende conventies volgen:

  • Door de gebruiker gedefinieerde klassen moeten een singleton-patroon implementeren. De singleton-instantie heeft traditioneel de naam Log. Als uitbreiding mogen gebruikers niet handmatig aanroepen IDisposable.Dispose en toestaan dat de runtime het singleton-exemplaar aan het einde van de uitvoering van beheerde code opschoont.
  • Een door de gebruiker gedefinieerde, afgeleide klasse moet worden gemarkeerd als sealed tenzij de geavanceerde configuratie 'Utility EventSource' wordt geïmplementeerd die wordt besproken in de sectie Geavanceerd gebruik.
  • Roep IsEnabled() aan voordat u een resource-intensieve taak uitvoert die te maken heeft met het starten van een activiteit.
  • U kunt impliciet objecten maken EventTask door twee gebeurtenismethoden te declareren met volgende gebeurtenis-id's met het naamgevingspatroon <EventName>Start en <EventName>Stop. Deze gebeurtenissen moeten naast elkaar worden gedeclareerd in de klassedefinitie en de <EventName>Start methode moet eerst komen.
  • Probeer objecten EventSource achterwaarts compatibel te houden en ze op de juiste manier te versien. De standaardversie voor een gebeurtenis is 0. De versie kan worden gewijzigd door de instelling in te stellen Version. Wijzig de versie van een gebeurtenis wanneer u eigenschappen van de payload wijzigt. Voeg altijd nieuwe payload-eigenschappen toe aan het einde van de gebeurtenisdeclaratie. Als dit niet mogelijk is, maakt u een nieuwe gebeurtenis met een nieuwe id om de oude te vervangen.
  • Bij het declareren van gebeurtenismethoden geeft u eerst eigenschappen voor payload met vaste grootte op voordat u eigenschappen met variabele grootte specificeert.
  • EventKeywords worden gebruikt als een bitmasker voor het opgeven van specifieke gebeurtenissen bij het abonneren op een provider. U kunt trefwoorden opgeven door een public static class Keywords lidklasse public const EventKeywords met leden te definiëren.
  • Koppel dure gebeurtenissen aan een EventKeywords met EventAttribute gebruik. Met dit patroon kunnen gebruikers van uw EventSource zich afmelden voor deze dure bewerkingen.

Zelfbeschrijvende (tracelogging) versus manifest-gebeurtenisformaten

EventSource kan worden geconfigureerd in twee verschillende modi op basis van de gebruikte constructor of op welke vlaggen EventSourceOptions zijn ingesteld.

In het verleden zijn deze twee indelingen afgeleid van twee indelingen die door Event Tracing for Windows (ETW) worden gebruikt. Hoewel deze twee modi geen invloed hebben op de mogelijkheid om Event Tracing voor Windows (ETW) of EventPipe-listeners te gebruiken, genereren ze de metagegevens voor gebeurtenissen anders.

De standaard gebeurtenisindeling is EtwManifestEventFormat, die is ingesteld als deze niet is opgegeven op EventSourceSettings. Op manifest gebaseerde EventSource objecten genereren een XML-document dat de gebeurtenissen vertegenwoordigt die zijn gedefinieerd in de klasse bij de initialisatie. Hiervoor moet de EventSource over zichzelf worden gereflecteerd om de provider- en gebeurtenismetagegevens te genereren.

Als u een zelfbeschrijvende gebeurtenisindeling (tracelogging) wilt gebruiken, doet u dit door de EventSource constructor, de EventSource(String) constructor of de EventSource(String, EventSourceSettings) constructor te gebruiken, of door de EtwSelfDescribingEventFormat vlag van EventSourceSettings in te stellen. Zelfbeschrijfde bronnen genereren minimale metagegevens van providers bij initialisatie en genereren alleen metagegevens van gebeurtenissen wanneer Write(String) deze worden aangeroepen. In tegenstelling tot de manifestindeling worden bij het luisteren via ETW alleen de metagegevens Niveau, Trefwoord en Opcode opgenomen uit het EventAttribute kenmerk. Andere eigenschappen, zoals EventId of Message, zijn niet opgenomen.

In de praktijk zijn deze instellingen voor gebeurtenisindeling alleen van invloed op het gebruik met lezers op basis van Event Tracing for Windows (ETW). Ze kunnen echter een klein effect hebben op initialisatietijd en schrijftijden per gebeurtenis vanwege de tijd die nodig is voor reflectie en het genereren van de metagegevens.

Constructors

Name Description
EventSource()

Hiermee maakt u een nieuw exemplaar van de EventSource klasse.

EventSource(Boolean)

Hiermee maakt u een nieuw exemplaar van de klasse EventSource en geeft u op of er een uitzondering moet worden gegenereerd wanneer er een fout optreedt in de onderliggende Windows-code.

EventSource(EventSourceSettings, String[])

Initialiseert een nieuw exemplaar van het EventSource te gebruiken exemplaar met niet-contractgebeurtenissen die de opgegeven instellingen en eigenschappen bevatten.

EventSource(EventSourceSettings)

Hiermee maakt u een nieuw exemplaar van de EventSource klasse met de opgegeven configuratie-instellingen.

EventSource(String, EventSourceSettings, String[])

Hiermee maakt u een nieuw exemplaar van de EventSource klasse met de opgegeven configuratie-instellingen.

EventSource(String, EventSourceSettings)

Hiermee maakt u een nieuw exemplaar van de EventSource klasse met de opgegeven naam en instellingen.

EventSource(String, Guid, EventSourceSettings, String[])

Biedt de mogelijkheid om gebeurtenissen te maken voor gebeurtenistracering op verschillende platforms.

EventSource(String, Guid)

Biedt de mogelijkheid om gebeurtenissen te maken voor gebeurtenistracering op verschillende platforms.

EventSource(String)

Hiermee maakt u een nieuw exemplaar van de EventSource klasse met de opgegeven naam.

Eigenschappen

Name Description
ConstructionException

Hiermee wordt een uitzondering opgehaald die is gegenereerd tijdens de bouw van de gebeurtenisbron.

CurrentThreadActivityId

Hiermee haalt u de activiteits-id van de huidige thread op.

Guid

De unieke id voor de gebeurtenisbron.

Name

De beschrijvende naam van de klasse die is afgeleid van de gebeurtenisbron.

Settings

Hiermee haalt u de instellingen op die zijn toegepast op deze gebeurtenisbron.

Methoden

Name Description
Dispose()

Alle resources die door het huidige exemplaar van de EventSource klasse worden gebruikt, worden vrijgegeven.

Dispose(Boolean)

Publiceert de niet-beheerde resources die door de EventSource klasse worden gebruikt en brengt eventueel de beheerde resources vrij.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
Finalize()

Hiermee kan het EventSource object proberen resources vrij te maken en andere opschoonbewerkingen uitvoeren voordat het object wordt vrijgemaakt door garbagecollection.

GenerateManifest(Type, String, EventManifestOptions)

Retourneert een tekenreeks van het XML-manifest dat is gekoppeld aan de huidige gebeurtenisbron.

GenerateManifest(Type, String)

Retourneert een tekenreeks van het XML-manifest dat is gekoppeld aan de huidige gebeurtenisbron.

GetGuid(Type)

Hiermee haalt u de unieke id op voor deze implementatie van de gebeurtenisbron.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetName(Type)

Hiermee haalt u de beschrijvende naam van de gebeurtenisbron op.

GetSources()

Hiermee haalt u een momentopname op van alle gebeurtenisbronnen voor het toepassingsdomein.

GetTrait(String)

Hiermee haalt u de eigenschapswaarde op die is gekoppeld aan de opgegeven sleutel.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
IsEnabled()

Bepaalt of de huidige gebeurtenisbron is ingeschakeld.

IsEnabled(EventLevel, EventKeywords, EventChannel)

Bepaalt of de huidige gebeurtenisbron is ingeschakeld voor gebeurtenissen met het opgegeven niveau, trefwoorden en kanaal.

IsEnabled(EventLevel, EventKeywords)

Bepaalt of de huidige gebeurtenisbron met het opgegeven niveau en trefwoord is ingeschakeld.

MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
OnEventCommand(EventCommandEventArgs)

Aangeroepen wanneer de huidige gebeurtenisbron wordt bijgewerkt door de controller.

SendCommand(EventSource, EventCommand, IDictionary<String,String>)

Hiermee wordt een opdracht verzonden naar een opgegeven gebeurtenisbron.

SetCurrentThreadActivityId(Guid, Guid)

Hiermee stelt u de activiteits-id voor de huidige thread in en retourneert u de vorige activiteits-id.

SetCurrentThreadActivityId(Guid)

Hiermee stelt u de activiteits-id in op de huidige thread.

ToString()

Hiermee haalt u een tekenreeksweergave op van het huidige exemplaar van de gebeurtenisbron.

Write(String, EventSourceOptions)

Hiermee schrijft u een gebeurtenis zonder velden, maar met de opgegeven naam en opties.

Write(String)

Hiermee schrijft u een gebeurtenis zonder velden, maar met de opgegeven naam en standaardopties.

Write<T>(String, EventSourceOptions, Guid, Guid, T)

Hiermee schrijft u een gebeurtenis met de opgegeven naam, opties, gerelateerde activiteit en gebeurtenisgegevens.

Write<T>(String, EventSourceOptions, T)

Hiermee schrijft u een gebeurtenis met de opgegeven naam, gebeurtenisgegevens en opties.

Write<T>(String, EventSourceOptions, T)

Hiermee schrijft u een gebeurtenis met de opgegeven naam, opties en gebeurtenisgegevens.

Write<T>(String, T)

Hiermee schrijft u een gebeurtenis met de opgegeven naam en gegevens.

WriteEvent(Int32, Byte[])

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en bytematrixargument.

WriteEvent(Int32, EventSource+EventSourcePrimitive[])

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en een variabel aantal primitieven van de gebeurtenisbron.

WriteEvent(Int32, Int32, Int32, Int32)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en 32-bits geheel getalargumenten.

WriteEvent(Int32, Int32, Int32)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en 32-bits geheel getalargumenten.

WriteEvent(Int32, Int32, String)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en 32-bits gehele getallen en tekenreeksargumenten.

WriteEvent(Int32, Int32)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en het argument 32-bits geheel getal.

WriteEvent(Int32, Int64, Byte[])

Schrijft de gebeurtenisgegevens met behulp van de opgegeven id en 64-bits geheel getal en bytematrixargumenten.

WriteEvent(Int32, Int64, Int64, Int64)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en 64-bits argumenten.

WriteEvent(Int32, Int64, Int64)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en 64-bits argumenten.

WriteEvent(Int32, Int64, String)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en een 64-bits geheel getal en tekenreeksargumenten.

WriteEvent(Int32, Int64)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en het argument 64-bits geheel getal.

WriteEvent(Int32, Object[])

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en matrix met argumenten.

WriteEvent(Int32, String, Int32, Int32)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en argumenten.

WriteEvent(Int32, String, Int32)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en argumenten.

WriteEvent(Int32, String, Int64)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en argumenten.

WriteEvent(Int32, String, String, String)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en tekenreeksargumenten.

WriteEvent(Int32, String, String)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en tekenreeksargumenten.

WriteEvent(Int32, String)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id en tekenreeksargument.

WriteEvent(Int32)

Hiermee schrijft u een gebeurtenis met behulp van de opgegeven gebeurtenis-id.

WriteEventCore(Int32, Int32, EventSource+EventData*)

Hiermee maakt u een nieuwe WriteEvent overbelasting met behulp van de opgegeven gebeurtenis-id en gebeurtenisgegevens.

WriteEventWithRelatedActivityId(Int32, Guid, Object[])

Hiermee schrijft u een gebeurtenis die aangeeft dat de huidige activiteit is gerelateerd aan een andere activiteit.

WriteEventWithRelatedActivityIdCore(Int32, Guid*, Int32, EventSource+EventData*)

Hiermee schrijft u een gebeurtenis die aangeeft dat de huidige activiteit is gerelateerd aan een andere activiteit.

gebeurtenis

Name Description
EventCommandExecuted

Treedt op wanneer een opdracht afkomstig is van een gebeurtenislistener.

Van toepassing op

Veiligheid thread

Dit type is thread veilig.