Программирование мобильных устройств на платформе .NET Compact Framework
Шрифт:
'Пользователь щелкнул на кнопке и хочет перейти к выполнению
'следующего шага данного приложения. Скрыть текстовое окно и отобразить
'окно списка в отведенном для этого месте.
Private Sub Button1_Click(ByVal senderAs System.Object,ByVal _
e As System.EventArgs) Handles Button1.Click
m_someImportantInfo = TextBox1.Text
TextBox1.Visible = False
ListBox1.Visible =True
End Sub
Листинг 5.3. Явное изменение состояния приложения (удачный подход)
Private m_someImportantInfo As String
'Определить состояния, в которых может находиться приложение
Enum MyStates
step1
step2
End Enum
'----------------------------------------------------
'Главная функция, которая
'вызывается всякий раз, когда возникает необходимость
'в изменении состояния приложения
'----------------------------------------------------
Sub ChangeApplicationState(ByVal newStateAs MyStates)
Select Case newState
Case MyStates.step1
TextBox1.Visible = True
ListBox1.Visible = False
Case MyStates.step2
m_someImportantInfo = TextBox1.Text
TextBox1.Visible = False
ListBox1.Visible = True
End Select
End Sub
'----------------------------------------------------------------------
'Пользователь щелкнул на кнопке и хочет перейти к выполнению
'следующего шага данного приложения. Скрыть текстовое окно и отобразить
'окно списка в отведенном для этого месте.
'----------------------------------------------------------------------
Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
'Вызвать главную функцию для изменения состояния
ChangeApplicationState(MyStates.step2)
End Sub
'-------------------------------------
'Код, выполняющийся при загрузке формы
'-------------------------------------
Private Sub Forml_Load(ByVal sender As Object, _
ByVal eAs System.EventArgs)
'Вызвать главную функцию для изменения состояния
ChangeApplicationState(MyStates.step1)
End Sub
Листинг 5.4. Код программы нахождения простых чисел, предназначенный для выполнения фоновым потоком
Option Strict On
Imports System
Public Class FindNextPrimeNumber
'Определить возможные состояния
Public Enum ProcessingState
notYetStarted
waitingToStartAsync
lookingForPrime
foundPrime
requestAbort
aborted
End Enum
Private m_startTickCount As Integer
Private m_endTickCount As Integer
Private m_startPoint As Long
Private m_NextHighestPrime As Long
Private m_processingState As ProcessingState
'---------------------------
'Простейший конечный автомат
'---------------------------
Public Sub setProcessingState(ByVal nextState As ProcessingState)
'------------------------------------------------------------
'Простейший защитный код, гарантирующий
'невозможность перехода в другое состояние в случае успешного
'завершения задачи или успешной отмены ее выполнения
'------------------------------------------------------------
Dim currentState As ProcessingState
currentState = getProcessingState
If ((currentState = ProcessingState.aborted) _
OrElse (currentState = ProcessingState.foundPrime)) Then
Return
End If
'Безопасное параллельное выполнение потоков
SyncLock (Me)
'Разрешить изменение состояния
m_processingState = nextState
End SyncLock
End Sub
Public Function getProcessingState As ProcessingState
Dim currentState As ProcessingState
'Безопасное параллельное выполнение потоков
Поделиться:
Популярные книги
Прапорщик. Назад в СССР. Книга 7
7. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Охотник на демонов
2. Живой лёд
Фантастика:
боевая фантастика
5.83
рейтинг книги
Ваше Сиятельство 7
7. Ваше Сиятельство
Фантастика:
боевая фантастика
аниме
5.00
рейтинг книги
На границе империй. Том 10. Часть 8
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Пески веков (сборник)
1970. Зарубежная фантастика
Фантастика:
научная фантастика
5.00
рейтинг книги
Конец детства (сборник)
Фантастика:
научная фантастика
7.00
рейтинг книги
Бродяга 3
3. Бродяга
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Печать Пожирателя
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Товарищ "Чума" 5
5. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Старый, но крепкий 2
2. Культивация без насилия
Фантастика:
рпг
уся
эпическая фантастика
5.00
рейтинг книги
Локки 9. Потомок бога
9. Локки
Фантастика:
фэнтези
попаданцы
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Третий. Том 5
5. Отпуск
Фантастика:
космическая фантастика
фантастика: прочее
5.00
рейтинг книги
Неправильный лекарь. Том 1
1. Неправильный лекарь
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Врубель
Жизнь в искусстве
Документальная литература:
биографии и мемуары
5.00