Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
End Sub
'Проверить состояние выполнения
Private Sub buttonCheckStatus_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ButtonCheckStatus.Click
'Запросить у класса управления потоком, в каком состоянии он находится
MsgBox(m_threadExecute.State.ToString)
'Запросить класс, метод которого выполняется в потоке,
'o состоянии выполнения
MsgBox(m_testMe.m_loopX.ToString)
End Sub
Листинг 9.4. Код, который должен быть помещен в класс Smartphone Form1.cs
'------------------------------------------------------
'Весь этот код должен находиться внутри класса Form1.cs
'------------------------------------------------------
'Объект, который будет выполнять все фоновые вычисления
Private m_findNextPrimeNumber As FindNextPrimeNumber
'--------------------------------------------
'Обновить текст, информирующий о состоянии...
'--------------------------------------------
Sub setCalculationStatusText(ByVal text As String)
Label1.Text = text
End Sub
Private Sub menuItemExit_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles menuItemExit.Click
Me.Close
End Sub
'----------------------------------------
'Пункт меню для начала фоновых вычислений
'----------------------------------------
Private Sub menuItemStart Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles menuItemStart.Click
'Число, с которого мы хотим начать поиск
Dim startNumber As Long = System.Convert.ToInt64(TextBox1.Text)
'Установить фоновое выполнение
m_findNextPrimeNumber = New FindNextPrimeNumber(startNumber)
'Запустить выполнение задачи в фоновом режиме...
m_findNextPrimeNumber.findNextHighestPrime_Async
'Установить таймер, используемый для контроля длительности вычислений
Timer1.Interval = 400 '400 мс
Timer1.Enabled = True
End Sub
'--------------------------------------------
'Пункт меню для "отмены" выполняющейся задачи
'--------------------------------------------
Private Sub menuItemAbortClick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles menuItemAbort.Click
'Не делать ничего, если вычисления не выполняются
If (m_findNextPrimeNumber Is Nothing) Then Return
'Установить поток в состояние прекращения выполнения
m_findNextPrimeNumber.setProcessingState( _
FindNextPrimeNumber.ProcessingState.requestAbort)
'Немедленно известить пользователя 'o готовности прекратить выполнение...
setCalculationStatusText("Ожидание прекращения выполнения...")
End Sub
'--------------------------------------------------------------
'Этот таймер, вызываемый потоком пользовательского интерфейса,
'позволяет отслеживать состояние выполнения 'фоновых вычислений
'--------------------------------------------------------------
Private Sub Timer1_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
'Если к моменту вызова искомое простое число еще
'не было найдено, отключить таймер
If (m_findNextPrimeNumber Is Nothing) Then
Timer1.Enabled = False
Return
End If
'-------------------------------------------------
'Если выполнение было отменено, освободить объект,
'осуществляющий поиск, и выключить таймер
'-------------------------------------------------
If (m_findNextPrimeNumber.getProcessingState = _
FindNextPrimeNumber.ProcessingState.aborted) Then
Timer1.Enabled = False
m_findNextPrimeNumber = Nothing
setCalculationStatusText("Поиск простого числа отменен")
Return
End If
'----------------------------------
'Удалось ли найти правильный ответ?
'----------------------------------
If (m_findNextPrimeNumber.getProcessingState = _
Поделиться:
Популярные книги
Ненаглядная жена его светлости
Любовные романы:
любовно-фантастические романы
6.23
рейтинг книги
Юнлинг
Фантастика:
героическая фантастика
космическая фантастика
попаданцы
8.35
рейтинг книги
Мент
8. Бандитский Петербург
Детективы:
боевики
8.58
рейтинг книги
Поводырь
3. Ботаник
Фантастика:
фэнтези
6.17
рейтинг книги
Мастер 2
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Древесный маг Орловского княжества 9
9. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 36
36. История Телепата
Фантастика:
боевая фантастика
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 4
4. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
На границе империй. Том 10. Часть 4
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга IХ
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследие Маозари 3
3. Наследие Маозари
Фантастика:
рпг
аниме
5.00
рейтинг книги
Наследие Маозари
1. Наследие Маозари
Фантастика:
рпг
попаданцы
аниме
5.80
рейтинг книги
Я не царь. Книга XXIV
24. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Феодал. Том 2
2. Диктатура Параметров
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.00