Книга: C# для профессионалов. Том II

Создание приемника событий

Создание приемника событий

Теперь было бы полезно создать приложение, которое получает событие, когда в службе происходит что-то плохое. Мы создадим простое оконное приложение, отслеживающее события службы Quote:

Оконное приложение имеет только окно списка и кнопку выхода:


Компонент EventLog добавляется в этот проект перетаскиванием его из панели инструментов. Свойство Log задается как Application, a Source как источник службы QuoteService. Класс EventLog также имеет свойство EnableRaisingEvents. До сих пор мы не говорили об этом свойстве. По умолчанию для него используется значение false, задание его как true означает, что событие создается каждый раз, когда происходит это событие, и можно написать обработчик событий для оконного события EntryWritten.

В файле EventListener.cs свойства задаются в методе InitializeComponent():

private void InitializeComponent() {
 this.eventLogQuote = new System.Diagnostics.EventLog();
 this.buttonExit = new System.Windows.Forms.Button();
 this.listBoxEvents = new System.Windows.Forms.ListBox();
 ((System.ComponentModel.ISupportInitialize)
  (this.eventLogQuote)).BeginInit();
 this.SuspendLayout();
 //
 // eventLogQuote
 //
 this.eventLogQuote.EnableRaisingEvents = true;
 this.eventLogQuote.Log = "Application";
 this.eventLogQuote.Source = "QuoteService";
 this.eventLogQuote.SynchronizingObject = this;
 this.eventLogQuote.EntryWritten +=
  new System.Diagnostics.EntryWrittenEventHandler(this.OnEntryWritten);
 // ...

Программа обработки OnEntryWritten() получает объект EntryWrittenEventArgs в качестве аргумента, где можно получить всю информацию из события. С помощью свойства Entry мы получаем объект EventLogEntry с информацией о времени, источнике события, типе, категории и т. д.:

protected void OnEntryWritten(object sender, System.Diagnostics.EntryWrittenEventArgs e) {
 DateTime time = e.Entry.TimeGenerated;
 string message = e.Entry.Message;
 listBoxEvents.Items.Add(time + " " + message);
}

Выполняющееся приложение показывает все события для QuoteService:


Оглавление книги


Генерация: 1.513. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз