Программирование мобильных устройств на платформе .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
'Безопасное параллельное выполнение потоков
Поделиться:
Популярные книги
Мимик!
1. Сбой Системы!
Фантастика:
боевая фантастика
5.40
рейтинг книги
Измена. Жизнь заново
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Я Гордый Часть 3
3. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я Гордый часть 2
2. Стальные яйца
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Счастливый торт Шарлотты
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Академия
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Кодекс Охотника. Книга XXIII
23. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Поступь Империи
7. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Я все еще граф. Книга IX
9. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Неверный. Свободный роман
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Стеллар. Трибут
2. Стеллар
Фантастика:
боевая фантастика
рпг
8.75
рейтинг книги
Темный Лекарь 4
4. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Сердце Дракона. Предпоследний том. Часть 1
Сердце дракона
Фантастика:
фэнтези
5.00
рейтинг книги
Курсант: Назад в СССР 10
10. Курсант
Фантастика:
попаданцы
альтернативная история
5.00