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

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

  m_processingState = nextState

 End SyncLock

End Sub

Public Function getProcessingState As ProcessingState

 Dim currentState As ProcessingState

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

 SyncLock (Me)

  currentState = m_processingState

 End SyncLock

 Return currentState

End Function


Public Function getTickCountDelta As Integer

 If (getProcessingState = _

  ProcessingState.lookingForPrime) Then

  Throw New Exception( _

   "Продолжается поиск простого числа! Окончательное время еще не вычислено")

 End If

 Return m_endTickCount - m_startTickCount

End Function


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

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

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

Public Function getPrime As Long

 If (getProcessingState <> 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 threadStartAs 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 (getProcessingState = ProcessingState.requestAbort) Then

  GoTo finished_looking

 End If


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

 setProcessingState(ProcessingState.lookingForPrime)

 m_startTickCount = System.Environment.TickCount

 Dim currentItemAs Long

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

 If ((m_startPointAnd 1) = 1) Then

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

  currentItem = m_startPoint + 2

 Else

Перейти на страницу:

Похожие книги

Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Эндрю Хант , Дэвид Томас , А. Алексашин

Программирование / Книги по IT
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT