Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

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

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

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

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

  • Читать дальше
  • 1
  • ...
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: