Чтение онлайн

на главную - закладки

Жанры

Программирование мобильных устройств на платформе .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

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

Бандит

Щепетнов Евгений Владимирович
1. Петр Синельников
Фантастика:
фэнтези
7.92
рейтинг книги
Бандит

Черный Маг Императора 20

Герда Александр
20. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 20

Война

Валериев Игорь
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Война

Черный Маг Императора 23

Герда Александр
23. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 23

Седьмая встреча

Вассму Хербьёрг
Проза:
современная проза
4.00
рейтинг книги
Седьмая встреча

День поминовения

Нотебоом Сэйс
Проза:
современная проза
5.00
рейтинг книги
День поминовения

Ученик. Книга вторая

Первухин Андрей Евгеньевич
2. Ученик
Фантастика:
фэнтези
5.40
рейтинг книги
Ученик. Книга вторая

Я снова не князь! Книга XVII

Дрейк Сириус
17. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я снова не князь! Книга XVII

Лев Толстой

Шкловский Виктор Борисович
363. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Лев Толстой

Чужак из ниоткуда 2

Евтушенко Алексей Анатольевич
2. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужак из ниоткуда 2

Печать мастера

Лисина Александра
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Печать мастера

Тринадцатый

NikL
1. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
6.80
рейтинг книги
Тринадцатый

Кодекс Охотника XXXI

Винокуров Юрий
31. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника XXXI

Слово мастера

Лисина Александра
11. Гибрид
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Слово мастера