Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "Программирование мобильных устройств на платформе .NET Compact Framework"
Описание и краткое содержание "Программирование мобильных устройств на платформе .NET Compact Framework" читать бесплатно онлайн.
Книга известного профессионала в области компьютерных технологий посвящена разработке приложений для широкого спектра мобильных устройств с использованием популярной и постоянно развивающейся платформы .NET Compact Framework. Уникальность этой книги состоит в том, что в ней гармонично переплетены теоретические сведения обо всем цикле разработки программного обеспечения с практическими примерами применения на языках С# и Visual Basic. Подробно рассматриваются концепции, лежащие в основе самой платформы .NET Compact Framework, а также вопросы, связанные с созданием эффективного пользовательского интерфейса, управлением памятью, производительностью и надежностью. Немалое внимание уделяется практическим аспектам разработки приложений для мобильных устройств, среди которых выбор модели представления и доступа к данным, внедрение коммуникационной модели, реализация модели поведения с помощью конечных автоматов и использование XML.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.
'Отобразить длительность интервала времени, ушедшего на вычисления
MsgBox(PerformanceSampling.GetSampleDurationText(0))
End Sub
'---------------------------------------------------------
'ГОРАЗДО БОЛЕЕ ЭФФЕКТИВНЫЙ АЛГОРИТМ!
'Для имитации создания типичного набора строк используется
'конструктор строк (String Builder)
'---------------------------------------------------------
Private Sub Button2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click
'Вызвать сборщик мусора, чтобы тест
'начинался с чистого состояния.
'ПРИБЕГАЙТЕ К ЭТОЙ МЕРЕ ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ! Вызовы
'сборщика мусора в программах вручную будут приводить к снижению
'общей производительности приложений!
System.GC.Collect()
Dim sb As System.Text.StringBuilder = _
New System.Text.StringBuilder
Dim total_result As String
Dim numberToStore As Integer
PerformanceSampling.StartSample(1, "StringBuilder")
Dim outer_loop As Integer
For outer_loop = 1 To LOOP_ITERATIONS
'Очистить конструктор строк
sb.Length = 0
'Очистить строку со старым результатом
total_result = ""
'Выполнять цикл до максимального значения x_counter, каждый раз
'присоединяя очередную тестовую строку к рабочей строке
Dim x_counter As Integer
For x_counter = 1 To COUNT_UNTIL
sb.Append(numberToStore)
sb.Append(", ")
'Увеличить значение счетчика
numberToStore = numberToStore + 1
Next
'Имитируем выполнение некоторых операций над строкой...
total_result = sb.ToString()
Next
PerformanceSampling StopSample(1)
'Отобразить длину строки
MsgBox("Длина строки: " + total_result.Length.ToString())
'Отобразить строку
MsgBox("String : " + total_result)
'Отобразить длительность интервала времени, ушедшего на вычисления
MsgBox(PerformanceSampling.GetSampleDurationText(1))
End Sub
Примеры к главе 9 (производительность и многопоточное выполнение)
Option Strict On
Imports System
Public Class ThreadExecuteTask
'Перечисляем возможные состояния
Public Enum ProcessingState
'-------------------
'Начальное состояние
'-------------------
'Перечисляем возможные состояния
notYetStarted
'-----------------
'Рабочие состояния
'-----------------
'Ожидание запуска фонового потока
waitingToStartAsync
'Выполнение кода в фоновом потоке
running
'Запросить отмену выполнения вычислений
requestAbort
'--------------------
'Состояния завершения
'--------------------
'Состояние завершения: выполнение фонового потока
'успешно завершено
done
'Состояние завершения: выполнение потока отменено
'до его завершения
aborted
End Enum
Private m_processingState As ProcessingState
Public Delegate Sub ExecuteMeOnAnotherThread(_
ByVal checkForAborts As ThreadExecuteTask)
Private m_CallFunction As ExecuteMeOnAnotherThread
Private m_useForStateMachineLock As Object
Public Sub New(ByVal functionToCall As ExecuteMeOnAnotherThread)
'Создать объект, который мы можем использовать в конечном автомате
'в целях блокировки
m_useForStateMachineLock = New Object
'Обозначить готовность к началу выполнения
m_processingState = ProcessingState.notYetStarted
'Сохранить функцию, которую необходимо вызвать
'в новом потоке
m CallFunction = functionToCall
'----------------------------------------------------------
'Создать новый поток и вызвать в нем функцию на выполнение:
' this.ThreadStartPoint()
'----------------------------------------------------------
Dim threadStart As System.Threading.ThreadStart threadStart = _
New System.Threading.ThreadStart(AddressOf ThreadStartPoint)
Dim newThread As System.Threading.Thread
newThread = New System.Threading.Thread(threadStart)
'Обозначить готовность к началу выполнения (в целях определенности
'это важно сделать еще до того, как будет запущен поток!)
setProcessingState(ProcessingState.waitingToStartAsync)
'Дать ОС команду начать выполнение нового потока в асинхронном режиме
newThread.Start()
'Возвратить управление функции, вызывающей этот поток
End Sub
'-------------------------------------------------
'Эта функция является точкой входа, вызываемой для
'выполнения в новом потоке
'-------------------------------------------------
Private Sub ThreadStartPoint()
'Установить состояние обработки, соответствующее выполнению
'функции в новом потоке!
setProcessingState(ProcessingState.running)
'Запустить на выполнение пользовательский код и передать указатель в наш
'класс, чтобы этот код мог периодически проверять, не поступил ли запрос
'на прекращение выполнения
m_CallFunction (Me)
'Если выполнение не было отменено, изменить состояние таким образом,
'чтобы оно соответствовало успешному завершению
If (m_processingState <> ProcessingState.aborted) Then
'Обозначить завершение выполнения
setProcessingState(ProcessingState.done)
End If
'Выйти из потока...
End Sub
'----------------
'Конечный автомат
'----------------
Public Sub setProcessingState(ByVal nextState As _
ProcessingState)
'В любой момент времени только одному потоку выполнения могут быть
'разрешены попытки изменить состояние
SyncLock (m_useForStateMachineLock)
'В случае попытки повторного вхождения в текущее состояние
'никакие дополнительные действия не выполняются
If (m_processingState = nextState) Then
Return
End If
'-----------------------------------------------------------
'Простейший защитный код, гарантирующий
'невозможность перехода в другое состояние, если задача либо
'успешно завершена, либо успешно отменена
'-----------------------------------------------------------
If ((m_processingState = ProcessingState.aborted) OrElse _
(m_processingState = ProcessingState.done)) Then
Return
End If
'Убедиться в допустимости данного изменения состояния
Select Case (nextState)
Case ProcessingState.notYetStarted
Throw New Exception _
("Переход в состояние 'notYetStarted' невозможен")
Case ProcessingState.waitingToStartAsync
If (m_processingState <> ProcessingState.notYetStarted) Then
Throw New Exception("Недопустимое изменение состояния")
End If
Case ProcessingState.running
If (m_processingState <> _
ProcessingState.waitingToStartAsync) Then
Throw New Ехсерtion("Недопустимое изменение состояния")
End If
Case ProcessingState.done
'Мы можем завершить работу лишь тогда, когда она выполняется.
'Это возможно также в тех случаях, когда пользователь затребовал
'отмену выполнения, но работа к этому моменту уже была закончена
If ((m_processingState <> ProcessingState.running) AndAlso _
(m_processingState <> ProcessingState.requestAbort)) Then
Throw New Exception("Недопустимое изменение состояния")
End If
Case ProcessingState.aborted
If (m_processingState <> ProcessingState.requestAbort) Then
Throw New Exception("Недопустимое изменение состояния")
End If
End Select
'Разрешить изменение состояния
m_processingState = nextState
End SyncLock
End Sub
Public ReadOnly Property State() As ProcessingState
Get
Dim currentState As ProcessingState
'Предотвратить попытки одновременного чтения/записи состояния
SyncLock (m_useForStateMachineLock)
currentState = m_orocessingState
End SyncLock
Return currentState
End Get
End Property
End Class
Листинг 9.2. Тестовая программа для выполнения работы в фоновом потокеOption Strict On
Imports System
'---------------------------------------------------------
'Тестовый код, который используется для выполнения фоновым
'потоком
'---------------------------------------------------------
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "Программирование мобильных устройств на платформе .NET Compact Framework"
Книги похожие на "Программирование мобильных устройств на платформе .NET Compact Framework" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework"
Отзывы читателей о книге "Программирование мобильных устройств на платформе .NET Compact Framework", комментарии и мнения людей о произведении.