Udostępnij za pośrednictwem


EventLog.EntryWritten Zdarzenie

Definicja

Występuje, gdy wpis jest zapisywany w dzienniku zdarzeń na komputerze lokalnym.

public:
 event System::Diagnostics::EntryWrittenEventHandler ^ EntryWritten;
public event System.Diagnostics.EntryWrittenEventHandler EntryWritten;
member this.EntryWritten : System.Diagnostics.EntryWrittenEventHandler 
Public Custom Event EntryWritten As EntryWrittenEventHandler 

Typ zdarzenia

Przykłady

W poniższym przykładzie jest obsługiwane zdarzenie napisane przez wpis.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
ref class MySample
{
private:

   // This member is used to wait for events.
   static AutoResetEvent^ signal;

public:
   static void main()
   {
      signal = gcnew AutoResetEvent( false );
      EventLog^ myNewLog = gcnew EventLog;
      myNewLog->Source = "testEventLogEvent";
      myNewLog->EntryWritten += gcnew EntryWrittenEventHandler( MyOnEntryWritten );
      myNewLog->EnableRaisingEvents = true;
      myNewLog->WriteEntry("Test message", EventLogEntryType::Information);
      signal->WaitOne();
   }

   static void MyOnEntryWritten( Object^ /*source*/, EntryWrittenEventArgs^ /*e*/ )
   {
      Console::WriteLine("In event handler");
      signal->Set();
   }

};

int main()
{
   MySample::main();
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    // This member is used to wait for events.
    static AutoResetEvent signal;

    public static void Main(){

        signal = new AutoResetEvent(false);
        EventLog myNewLog = new EventLog("Application", ".", "testEventLogEvent");

        myNewLog.EntryWritten += new EntryWrittenEventHandler(MyOnEntryWritten);
        myNewLog.EnableRaisingEvents = true;
        myNewLog.WriteEntry("Test message", EventLogEntryType.Information);
        signal.WaitOne();
    }

    public static void MyOnEntryWritten(object source, EntryWrittenEventArgs e){
        Console.WriteLine("In event handler");
        signal.Set();
    }
}
Option Explicit On 
Option Strict On

Imports System.Diagnostics
Imports System.Threading


Class MySample

    ' This member is used to wait for events.
    Private Shared signal As AutoResetEvent


    Public Shared Sub Main()

        signal = New AutoResetEvent(False)
        Dim myNewLog As New EventLog("Application", ".", "testEventLogEvent")

        AddHandler myNewLog.EntryWritten, AddressOf MyOnEntryWritten
        myNewLog.EnableRaisingEvents = True
        myNewLog.WriteEntry("Test message", EventLogEntryType.Information)

        signal.WaitOne()
    End Sub


    Public Shared Sub MyOnEntryWritten(ByVal [source] As Object, ByVal e As EntryWrittenEventArgs)
        Console.WriteLine("In event handler")
        signal.Set()
    End Sub
End Class

Uwagi

Aby otrzymywać powiadomienia o zdarzeniach, należy ustawić truewartość EnableRaisingEvents . Powiadomienia o zdarzeniach można otrzymywać tylko wtedy, gdy wpisy są zapisywane na komputerze lokalnym. Nie można odbierać powiadomień o wpisach zapisanych na komputerach zdalnych.

Podczas tworzenia delegata EntryWritten należy zidentyfikować metodę, która będzie obsługiwać zdarzenie. Aby skojarzyć zdarzenie z programem obsługi zdarzeń, dodaj wystąpienie delegata do zdarzenia. Procedura obsługi zdarzeń jest wywoływana za każdym razem, gdy wystąpi zdarzenie, dopóki nie usuniesz delegata. Aby uzyskać więcej informacji na temat obsługi zdarzeń za pomocą delegatów, zobacz Obsługa i podnoszenie zdarzeń.

System reaguje WriteEntry tylko wtedy, gdy ostatnie zdarzenie zapisu miało miejsce co najmniej sześć sekund wcześniej. Oznacza to, że w ciągu sześciu sekund otrzymasz tylko jedno EntryWritten powiadomienie o zdarzeniu, nawet jeśli wystąpi więcej niż jedna zmiana dziennika zdarzeń. W przypadku wstawienia wystarczająco długiego interwału uśpienia (około 10 sekund) między wywołaniami metody WriteEntryjest mniej prawdopodobne, aby przegapić zdarzenie. Jeśli jednak zdarzenia zapisu występują częściej, powiadomienie o zdarzeniu może nie zostać odebrane do następnego interwału. Zazwyczaj nieodebrane powiadomienia o zdarzeniach nie są tracone, ale opóźnione.

Dotyczy

Zobacz też