Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
'ПРИМЕЧАНИЕ. Мы используем блокирование потока для уверенности в том,
'что эти значения не считываются во время выполнения операции
'их записи. Поскольку доступ к m_comparisonsSoFar
'и m_CurrentNumberBeingExamined могут осуществлять
'одновременно несколько нитей, любая выполняемая над ними
'операция записи/считывания должна синхронизироваться с "блокировкой",
'что будет гарантировать "атомарность" этих операций
SyncLock (Me)
m_CurrentNumberBeingExamined = potentialPrime
m_comparisonsSoFar = m_comparisonsSoFar + 1
End SyncLock
End While
'Число является простым
Return True
End Function
End Class
Примеры к главе 10 (производительность и XML)
Листинг 10.1. Использование XML DOM для сохранения данных в файле и их загрузки
Option Strict On
Option Compare Binary
Imports System
'---------------------------------------------
'Демонстрирует сохранение и загрузку файлов с
'использованием объектной модели документа XML
'---------------------------------------------
Public Class SaveAndLoadXML_UseDOM
'XML-дескрипторы, которые мы будем использовать в нашем документе
Const XML_ROOT_TAG As String = "AllMyData"
Const XML_USERINFO_TAG As String = "UserInfo"
Const XML_USERID_TAG As String = "UserID"
Const XML_NAMEINFO_TAG As String = "Name"
Const XML_FIRSTNAME _TAG As String = "FirstName"
Const XML_LASTNAME_TAG As String = "LastName"
'--------------------------------------------------------------
'Загружает пользовательское состояние
' [in] fileName: Имя файла, используемого для сохранения данных
' [out] userId: Загруженный идентификатор пользователя
' [out] firstName: Загруженное имя пользователя
' [out] lastName: Загруженная фамилия пользователя
'--------------------------------------------------------------
Public Shared Sub XML_LoadUserInfo(ByVal fileName As String, _
ByRef userId As Integer, ByRef firstName As String, _
ByRef lastName As String)
'Начинаем с нулевых значений
userId = 0
firstName = ""
lastName = ""
'Предполагаем, что данные еще не загружены
Dim gotUserInfoData As Boolean = False
Dim xmlDocument As System.Xml.XmlDocument = _
New System.Xml.XmlDocument
xmlDocument.Load(fileName)
'Получить корневой узел
Dim rootElement As System.Xml.XmlElement
rootElement = _
CType(xmlDocument.ChildNodes(0), System.Xml.XmlElement)
'Убедиться в том, что корневой узел согласуется с ожидаемым текстом,
'ибо противное означает, что мы имеем дело с каким-то другим XML-файлом
If (rootElement.Name <> XML_ROOT_TAG) Then
Throw New Exception("Тип корневого узла не совпадает с ожидаемым!")
End If
'-----------------------------------------------------------
'Простой конечный автомат для итеративного обхода всех узлов
'-----------------------------------------------------------
Dim childOf_RootNode As System.Xml.XmlElement
For Each childOf_RootNode In _
rootElement.ChildNodes
'Если это узел UserInfo, то мы хотим просмотреть его содержимое
If (childOf_RootNode.Name = XML_USERINFO_TAG) Then
gotUserInfoData = True
'Пользовательские данные найдены
'--------------------------------
'Загрузить каждый из подэлементов
'--------------------------------
Dim child_UserDataNode As System.Xml.XmlElement
For Each child_UserDataNode In _
childOf_RootNode.ChildNodes
'Идентификатор пользователя (UserID)
If (child_UserDataNode.Name = XML_USERID_TAG) Then
userId = CInt(child_UserDataNode.InnerText)
'ФИО пользователя (UserName)
ElseIf (child_UserDataNode.Name = XML_NAMEINFO_TAG) Then
Dim child_Name As System.Xml.XmlElement
Поделиться:
Популярные книги
Учитель из прошлого тысячелетия
6. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Назад в СССР 5
5. Курсант
Фантастика:
попаданцы
альтернативная история
6.64
рейтинг книги
Потомок бога
1. Локки
Фантастика:
попаданцы
альтернативная история
аниме
сказочная фантастика
5.00
рейтинг книги
Магнатъ
4. Александр Агренев
Приключения:
исторические приключения
8.83
рейтинг книги
Феномен
2. Уникум
Фантастика:
боевая фантастика
6.50
рейтинг книги
Мужчина моей судьбы
2. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.03
рейтинг книги
Принадлежать им
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Эволюционер из трущоб. Том 12
12. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Поводырь
3. Ботаник
Фантастика:
фэнтези
6.17
рейтинг книги
Сирийский рубеж
5. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Кодекс Охотника. Книга XXXVI
36. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том VIII
8. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Ким
Приключения:
исторические приключения
7.62
рейтинг книги
Старый, но крепкий 4
4. Культивация без насилия
Фантастика:
уся
фэнтези
5.00