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

Тут можно читать онлайн Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Издательский дом Вильямс, год 2006. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование мобильных устройств на платформе .NET Compact Framework
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс
  • Год:
    2006
  • Город:
    Москва • Санкт-Петербург • Киев
  • ISBN:
    5-8459-0989-9
  • Рейтинг:
    4.22/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Программирование мобильных устройств на платформе .NET Compact Framework - описание и краткое содержание, автор Иво Салмре, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга известного профессионала в области компьютерных технологий посвящена разработке приложений для широкого спектра мобильных устройств с использованием популярной и постоянно развивающейся платформы .NET Compact Framework. Уникальность этой книги состоит в том, что в ней гармонично переплетены теоретические сведения обо всем цикле разработки программного обеспечения с практическими примерами применения на языках С# и Visual Basic. Подробно рассматриваются концепции, лежащие в основе самой платформы .NET Compact Framework, а также вопросы, связанные с созданием эффективного пользовательского интерфейса, управлением памятью, производительностью и надежностью. Немалое внимание уделяется практическим аспектам разработки приложений для мобильных устройств, среди которых выбор модели представления и доступа к данным, внедрение коммуникационной модели, реализация модели поведения с помощью конечных автоматов и использование XML.

Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.

Программирование мобильных устройств на платформе .NET Compact Framework - читать онлайн бесплатно полную версию (весь текст целиком)

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

Интервал:

Закладка:

Сделать

setCalculationStatusText("Вычисления продолжаются. Поиск в области: " + _

CStr(currentItem) + ". " + _

"Для вас выполнено " + CStr(numberCalculationsToFar) + _

" расчетов!")

End Sub

Листинг 9.5. Код класса FindNextPrimeNumber.cs

Option Strict On

Imports System

Public Class FindNextPrimeNumber

'Перечисляем возможные состояния

Public Enum ProcessingState

notYetStarted

waitingToStartAsync

lookingForPrime

foundPrime

requestAbort

aborted

End Enum

Private m_startPoint As Long

Private m_NextHighestPrime As Long

'Поиск какого количества элементов выполнен?

Private m_comparisonsSoFar As Long

'Для какого элемента сейчас выполняется поиск простого числа?

Private m_CurrentNumberBeingExamined As Long

'Вызывается для обновления информации о состоянии выполнения

Public Sub getExecutionProgressInfo( _

ByRef numberCalculationsSoFar As Long, _

ByRef currentItemBeingLookedAt As Long)

'ПРИМЕЧАНИЕ. Мы используем блокирование потока для уверенности в том,

'что эти значения не считываются во время выполнения операции

'их записи. Поскольку доступ к m_comparisonsSoFar

'и m_CurrentNumberBeingExamined могут осуществлять

'одновременно несколько потоков, любая выполняемая над ними

'операция записи/считывания должна синхронизироваться с "блокировкой",

'что будет гарантировать "атомарность" этих операций

SyncLock (Me)

numberCalculationsSoFar = m_comparisonsSoFar

currentItemBeingLookedAt = m_CurrentNumberBeingExamined

End SyncLock

End Sub

Private m_processingState As ProcessingState

'---------------------------

'Простейший конечный автомат

'---------------------------

Public Sub setProcessingState(ByVal nextState As _

ProcessingState)

'Простейший защитный код, гарантирующий

'невозможность перехода в другое состояние, если задача

'либо успешно завершена, либо успешно отменена

If ((m_processingState = ProcessingState.aborted) _

OrElse (m_processingState = ProcessingState.foundPrime)) Then

Return

End If

'Разрешить изменение состояния

m_processingState = nextState

End Sub

Public ReadOnly Property getProcessingState() As ProcessingState

Get

Return m_processingState

End Get

End Property

'------------------------

'Возвращает простое число

'------------------------

Public Function getPrime() As Long

If (m_processingState <> ProcessingState.foundPrime) Then

Throw New Exception("Простое число еще не найдено!")

End If

Return m_NextHighestPrime

End Function

'Конструктор класса

Public Sub New(ByVal startPoint As Long)

setProcessingState(ProcessingState.notYetStarted)

m_startPoint = startPoint

End Sub

'-----------------------------------------------------------

'Создает новый рабочий поток, который будет вызывать функцию

'findNextHighestPrime()

'-----------------------------------------------------------

Public Sub findNextHighestPrime_Async()

Dim threadStart As System.Threading.ThreadStart

threadStart = _

New System.Threading.ThreadStart(AddressOf _

findNextHighestPrime)

Dim newThread As System.Threading.Thread

newThread = New System.Threading.Thread(threadStart)

'Состояние должно отвечать, что поиск продолжается

setProcessingState(ProcessingState.waitingToStartAsync)

newThread.Start()

End Sub

'-------------------------------------------------------------

'Основной рабочий поток. Этот поток запускает поиск очередного

'простого числа и выполняется до тех пор, пока не произойдет

'одно из следующих двух событий:

' (а) найдено очередное простое число

' (b) от внешнего (по отношению к данному) потока поступила

' команда прекратить выполнение

'--------------------------------------------------------------

Public Sub findNextHighestPrime()

'Если поступила команда прекратить выполнение, то поиск даже

'не должен начинаться

If (m_processingState = ProcessingState.requestAbort) Then

GoTo finished_looking

End If

'Состояние должно отвечать, что поиск продолжается

setProcessingState(ProcessingState.lookingForPrime)

Dim currentItem As Long

'Проверить, является ли число нечетным

If ((m_startPoint And 1) = 1) Then

'Число является нечетным, начать поиск со следующего нечетного числа

currentItem = m_startPoint + 2

Else

'Число является четным, начать поиск со следующего нечетного числа

currentItem = m_startPoint + 1

End If

'Приступить к поиску простого числа

While (m_processingState = ProcessingState.lookingForPrime)

'B случае нахождения простого числа, возвратить его

If (isItemPrime(currentItem) = True) Then

m_NextHighestPrime = currentItem

'Обновить состояние

setProcessingState(ProcessingState.foundPrime)

End If

currentItem = currentItem + 2

End While

finished_looking:

'Выход. К этому моменту либо от другого потока поступила

'команда прекратить поиск, либо было найдено и записано

'следующее наибольшее простое число

'Если поступил запрос прекратить выполнение,

'сообщить, что выполнение процесса прекращено

If (m_processingState = ProcessingState.requestAbort) Then

setProcessingState(ProcessingState.aborted)

End If

End Sub

'Вспомогательная функция, которая проверяет, является

'ли число простым

Private Function isItemPrime(ByVal potentialPrime _

As Long) As Boolean

'Если число - четное, значит, оно не является простым

If ((potentialPrime And 1) = 0) Then

Return False

End If

'Продолжать поиск до тех пор, пока не будет превышено значение

'квадратного корня из числа

Dim end_point_of_search As Long end_point_of_search = _

CLng(System.Math.Sqrt(potentialPrime)) + 1

Dim current_test_item As Long = 3

While (current_test_item <= end_point_of_search)

'---------------------------------------------------------

'Проверить, не поступила ли команда прекратить выполнение!

'---------------------------------------------------------

If (m_processingState <> ProcessingState.lookingForPrime) Then

Return False

End If

'Если число делится без остатка,

'значит, оно не является простым

If (potentialPrime Mod current_test_item = 0) Then

Return False

End If

'Увеличить число на два

current_test_item = current test_item + 2

'-------------------------------------

'Увеличить число проверенных элементов

'-------------------------------------

'ПРИМЕЧАНИЕ. Мы используем блокирование потока для уверенности в том,

'что эти значения не считываются во время выполнения операции

'их записи. Поскольку доступ к m_comparisonsSoFar

'и m_CurrentNumberBeingExamined могут осуществлять

'одновременно несколько нитей, любая выполняемая над ними

'операция записи/считывания должна синхронизироваться с "блокировкой",

'что будет гарантировать "атомарность" этих операций

SyncLock (Me)

m_CurrentNumberBeingExamined = potentialPrime

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Иво Салмре читать все книги автора по порядку

Иво Салмре - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Программирование мобильных устройств на платформе .NET Compact Framework, автор: Иво Салмре. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x