Шрифт:
'-------------------------------------------------------------------------
'Код, который следует включать лишь в том случае, если приложение
'выполняется в режиме контроля запуска событий. Этот код характеризуется
'относительно высокими накладными расходами, и его следует компилировать и
'выполнять только тогда, когда выполняется диагностика.
'-------------------------------------------------------------------------
#If EVENTINSTRUMENTATION <> 0 Then
Private m_instrumentedEventLog As System.Collections.ArrayList
'----------------------------------------------------------------------
'Заносит записи о возникновении событий в массив, который мы
'можем просмотреть
'Примечание: Не делается никаких попыток ограничить размерность массива
' регистрационных записей, поэтому, чем дольше выполняется приложение,
' тем больше становится размер массива
'----------------------------------------------------------------------
Private Sub instrumented_logEventOccurrence(ByVal eventData _
As String)
'Создать журнал событий, если он еще не был создан
If (m_instrumentedEventLog Is Nothing) Then
m_instrumentedEventLog = _
New System.Collections.ArrayList
End If
'Зарегистрировать событие
m_instrumentedEventLog.Add(eventData)
End Sub
'----------------------------------------------------------
'Отобразить список возникших событий
'Примечание: Этот вариант реализации довольно груб.
' Целесообразнее отображать список событий
' в отдельном диалоговом окне, которое специально выводится
' для этого на экран.
'----------------------------------------------------------
Private Sub instrumentation_ShowEventLog Dim listItems As _
System.Windows.Forms.ListBox.ObjectCollection
listItems = listBoxEventLog.Items
'Очистить список элементов
listItems.Clear
'При отсутствии событий - выход
If (m instrumentedEventLog Is Nothing) Then
listItems.Add("0 событий")
Return
End If
'Отобразить поверх списка общее количество
'подсчитанных нами событий
listItems.Add(m_instrumentedEventLog.Count.ToString + _
" событий")
'Перечислить элементы списка в обратном порядке, чтобы
'первыми отображались самые последние из них
Dim logItem As String
Dim listIdx As Integer
For listIdx = _
m_instrumentedEventLog.Count - 1 To 0 Step -1
logItem = CStr(m_instrumentedEventLog(listIdx))
listItems.Add(logItem)
Next
End Sub
#End If
'------------------------------------------------------
'Событие изменения состояния переключателя RadioButton1
'------------------------------------------------------
Private Sub RadioButton1_CheckedChanged(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles RadioButton1.CheckedChanged
'Если обновление данных в пользовательском интерфейсе осуществляется
'приложением, то мы не хотим обрабатывать его так же, как если бы
'это событие было запущено пользователем. Если это именно так,