次の方法で共有


EventLog.EntryWritten イベント

定義

ローカル コンピューター上のイベント ログにエントリが書き込まれたときに発生します。

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

イベントの種類

次の例では、エントリ書き込みイベントを処理します。

#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

注釈

イベント通知を取得するには、 を に設定 EnableRaisingEvents する true必要があります。 イベント通知は、ローカル コンピューターでエントリが書き込まれた場合にのみ受信できます。 リモート コンピューターに書き込まれたエントリの通知を受信することはできません。

EntryWritten デリゲートを作成する場合は、イベントを処理するメソッドを指定します。 イベント ハンドラーにイベントを関連付けるには、イベントにデリゲートのインスタンスを追加します。 イベント ハンドラーは、デリゲートを削除するまで、イベントが発生するたびに呼び出されます。 デリゲートを使用したイベントの処理の詳細については、「イベントの 処理と発生」を参照してください。

システムは、最後の WriteEntry 書き込みイベントが少なくとも 6 秒前に発生した場合にのみ に応答します。 これは、複数のイベント ログの変更が発生した場合でも、6 秒間に 1 EntryWritten つのイベント通知のみを受信することを意味します。 への WriteEntry呼び出しの間に十分に長いスリープ間隔 (約 10 秒) を挿入すると、イベントを見逃す可能性が低くなります。 ただし、書き込みイベントが頻繁に発生する場合は、次の間隔までイベント通知を受け取らない可能性があります。 通常、不在着信したイベント通知は失われませんが、遅延されます。

適用対象

こちらもご覧ください