Case (ReadLocation.inAllMyData)
If (nodeName = XML_USERINFO_TAG) Then
currentReadLocation = ReadLocation.inUserInfo
End If
'Если мы находимся в узле UserInfo, то переход возможен
'в узлы, которые указаны ниже
Case (ReadLocation.inUserInfo)
If (nodeName = XML_USERID_TAG) Then
currentReadLocation = ReadLocation.inUserID
ElseIf (nodeName = XML_NAMEINFO_TAG) Then
currentReadLocation = ReadLocation.inName
End If
'Если мы находимся в узле Name, то переход возможен
'в узлы, которые указаны ниже
Case (ReadLocation.inName)
If (nodeName = XML_FIRSTNAME_TAG) Then
currentReadLocation = ReadLocation.inFirstName
ElseIf (nodeName = XML LASTNAME_TAG) Then
currentReadLocation = ReadLocation.inLastName
End If
End Select
End Sub
End Class
Примеры к главе 11 (производительность и графика)
Листинг 11.1. Заполнение данными и очистка от них элементов управления TreeView с использованием альтернативных стратегий
'----------------------------------------------------------------------------
'Примечание #1: В этом примере используется класс PerformanceSampling,
' определённый ранее в данной книге. Убедитесь в том, что
' вы включили этот класс в свой проект.
'Примечание #2: Этот код необходимо включить в класс Form, содержащий элемент
' управления TreeView и кнопки Button, к которым подключены
' приведенные ниже функции xxx_Click.
'----------------------------------------------------------------------------
'Количество элементов, которые необходимо поместить в элемент
'управления TreeView
Const NUMBER_ITEMS As Integer = 800
'-------------------------------------------------------------------------
'Код для кнопки "Fill: Baseline"
'Использование неоптимизированного подхода для заполнения данными элемента
'управления TreeView
'-------------------------------------------------------------------------
Private Sub UnOptimizedFill_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles UnOptimizedFill.Click
'Очистить массив для создания одинаковых условий тестирования
If (TreeView1.Nodes.Count > 0) Then
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
TreeView1.EndUpdate()
TreeView1.Update()
End If
'Для повышения корректности тестирования предварительно выполнить
'операцию сборки мусора. В реальных кодах этого делать не следует!
System.GC.Collect()
'Запустить таймер
PerformanceSampling.StartSample(0, "TreeViewPopulate")
'Заполнить данными элемент управления TreeView
Dim i As Integer
For i = 1 To NUMBER_ITEMS
TreeView1.Nodes.Add("TreeItem" + CStr(i))
Next
'Остановить таймер и отобразить результат
PerformanceSampling.StopSample(0)
MsgBox(PerformanceSampling.GetSampleDurationText(0))
End Sub
'-------------------------------------------------------------------------
'Код для кнопки "Clear: Baseline"
'Использование неоптимизированного подхода для заполнения данными элемента
'управления TreeView
'-------------------------------------------------------------------------
Private Sub UnOptimizedClear_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles UnOptimizedClear.Click
'Для повышения корректности тестирования предварительно выполнить
'операцию сборки мусора
System.GC.Collect()
'Запустить таймер
PerformanceSampling.StartSample(1, "TreeViewClear")
TreeView1.Nodes.Clear()
PerformanceSampling.StopSample(1)
MsgBox(PerformanceSampling.GetSampleDurationText(1))
End Sub
'--------------------------------------------------
'Код для кнопки "Fill: BeginUpdate"
'Подход, в котором используется метод BeginUpdate()
'--------------------------------------------------
Private Sub UseBeginEndUpdateForFill_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles UseBeginEndUpdateForFill.Click
'Очистить массив для создания одинаковых условий тестирования
If (TreeView1.Nodes.Count > 0) Then
TreeView1.BeginUpdate()
TreeView1.Nodes.Clear()
TreeView1.EndUpdate()
TreeView1.Update()
End If
'Для повышения корректности тестирования предварительно выполнить
'операцию сборки мусора. В РЕАЛЬНЫХ КОДАХ ЭТОГО ДЕЛАТЬ НЕ СЛЕДУЕТ!
System.GC.Collect()
'Запустить таймер
PerformanceSampling.StartSample(2, _
"Populate - Use BeginUpdate")
'Заполнить данными элемент управления TreeView
TreeView1.BeginUpdate()
Dim i As Integer
For i = 1 To NUMBER_ITEMS
TreeView1.Nodes.Add("TreeItem" + i.ToString())
Next
TreeView1.EndUpdate()
'Остановить таймер и отобразить результат
PerformanceSampling.StopSample(2)
MsgBox(PerformanceSampling.GetSampleDurationText(2))
End Sub
'--------------------------------------------------
Читать дальше