Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
'ли число простым
Private Function isItemPrime(ByVal potentialPrime As Long) As Boolean
'Если число - четное, значит, оно не является простым
If ((potentialPrime And 1) = 0) Then
Return False
End If
'Продолжать поиск до тех пор, пока не будет превышено значение
'квадратного корня из числа
Dim end_point_of_searchAs Long end_point_of_search = _
CLng(System.Math.Sqrt(potentialPrime) + 1)
Dim current_test_itemAs Long = 3
While (current_test_item <= end_point_of search)
'---------------------------------------------------------
'Проверить,
не поступила ли команда прекратить выполнение!
'---------------------------------------------------------
If (getProcessingState <> ProcessingState.lookingForPrime) Then
Return False
End If
'Если число делится без остатка,
'значит, оно не является простым
If (potentialPrimeMod current_test_item = 0) Then
Return False
End If
'Увеличить число на два
current_test_item = current test_item + 2
End While
'Число является простым
Return True
End Function
End Class
Листинг 5.5. Тестовая программа, которая вызывает на выполнение приведенный выше код фонового потока, осуществляющего поиск простого числа
'----------------------------------------------------------
'Код, обрабатывающий событие щелчка на кнопке Button1 формы
'Вызвать из этого потока функцию поиска простого числа!
'(Это приведет к блокированию потока)
'----------------------------------------------------------
Private Sub Button1_Click(ByVal senderAs System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim testItem As Long
testItem = System.Convert.ToInt64("123456789012345")
Dim nextPrimeFinder As FindNextPrimeNumber
nextPrimeFinder = New FindNextPrimeNumber(testItem)
nextPrimeFinder.findNextHighestPrime
Dim nextHighestPrime As Long
nextHighestPrime = nextPrimeFinder.getPrime
MsgBox(CStr(nextHighestPrime))
'Сколько
времени заняли вычисления?
Dim calculation_time As Integer
calculationtime = nextPrimeFinder.getTickCountDelta
MsgBox(CStr(calculation time) + " мс")
End Sub
'------------------------------------------------------------------------
'Код, обрабатывающий событие щелчка на кнопке Button2 формы
'Вызвать функцию поиска простого числа из другого потока!
'(Данный поток блокироваться не будет)
'Для отслеживания состояния выполнения задачи используем конечный автомат
'------------------------------------------------------------------------
Private Sub Button2_Click(ByVal senderAs System.Object, _
ByVal eAs System.EventArgs) Handles Button2.Click
Dim testItem As Long
testItem = System.Convert.ToInt64("123456789012345")
Dim nextPrimeFinderAs FindNextPrimeNumber
nextPrimeFinder = New FindNextPrimeNumber(testItem)
'-----------------------------------
'Выполнить обработку в другом потоке
'-----------------------------------
nextPrimeFinder.findNextHighestPrime_Async
'Войти в цикл и ожидать до тех пор, пока не будет найдено простое число
'или выполнение не будет прекращено
While ((nextPrimeFinder.getProcessingState <> _
FindNextPrimeNumber.ProcessingState.foundPrime) And _
(nextPrimeFinder.getProcessingState <> _
FindNextPrimeNumber.ProcessingState.aborted))
'ТОЛЬКО В ТЕСТОВОМ КОДЕ:
'Отобразить окно сообщений и предоставить пользователю возможность
'убрать его с экрана.
'Это позволяет организовать паузу
MsgBox("Поиск продолжается... Щелкните на кнопке OK")
'Мы могли бы прекратить поиск путем следующего вызова функции:
'nextPrimeFinder.setProcessingState(
' FindNextPrimeNumber.ProcessingState.requestAbort)
End While
Поделиться:
Популярные книги
Моров. Том 5
4. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я все еще не царь. Книга XXVI
26. Дорогой барон!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Андер Арес
1. Андер Арес
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Я граф. Книга XII
12. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Пушкарь. Пенталогия
Фантастика:
альтернативная история
8.11
рейтинг книги
Требую развода! Что значит- вы отказываетесь?
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бастард Императора. Том 2
2. Бастард Императора
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Изыскатель
5. Травник
Фантастика:
фэнтези
7.00
рейтинг книги
Герой
4. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.26
рейтинг книги
Законы Рода. Том 10
10. Граф Берестьев
Фантастика:
юмористическая фантастика
аниме
фэнтези
5.00
рейтинг книги
Проводник
2. Другая сторона
Фантастика:
боевая фантастика
рпг
7.41
рейтинг книги
Красноармеец
1. Красноармеец
Фантастика:
боевая фантастика
попаданцы
4.60
рейтинг книги
Хозяин Стужи 8
8. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Третье правило диверсанта
Фантастика:
постапокалипсис
5.67