Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » Программирование мобильных устройств на платформе .NET Compact Framework - Иво Салмре

Программирование мобильных устройств на платформе .NET Compact Framework - Иво Салмре

Читать онлайн Программирование мобильных устройств на платформе .NET Compact Framework - Иво Салмре

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 178 179 180 181 182 183 184 185 186 ... 206
Перейти на страницу:

  System.Convert.ToString( _

  (m_perfSamplesDuration(sampleIndex) / CDbl(1000.0)) ) + " секунд."

End Function

End Class

Листинг 7.2. Тестовая программа, демонстрирующая использование приведенного выше кода для измерения временных интервалов

Private Sub Button1_Click(ByVal senderAs System.Object, _

 ByVal e As System.EventArgs) Handles Button1.Click

 Const TEST_SAMPE_INDEXAs Integer = 2 'Выбрать любой допустимый индекс

 'Начать измерение

 PerformanceSampling.StartSample(TEST_SAMPE_INDEX, "TestSample")

 'Отобразить окно сообщений

 MsgBox("Для прекращения измерения нажмите кнопку OK")

 'Прекратить измерение

 PerformanceSampling.StopSample(TEST_SAMPE_INDEX)

 'Отобразить результаты

 MsgBox(PerformanceSampling.GetSampleDurationText( _

  TEST_SAMPE_INDEX))

End Sub

Листинг 7.3. Демонстрация трех различных уровней организации обратной связи с пользователем

'Поместить надписи на кнопках

Private Sub Form2_Load(ByVal senderAs System.Object, _

 ByVal e As System.EventArgs) Handles MyBase.Load

 button1.Text = "Плохая обратная связь"

 button2.Text = "Хорошая обратная связь"

 button3.Text = "Улучшенная обратная связь"

End Sub

'---------------------------------------------------------------------------

'Пример слабых интерактивных возможностей интерфейса:

' - Визуальная индикация начала выполнения работы отсутствует

' - Визуальная индикация окончания выполнения работы отсутствует

' - Пользовательский интерфейс не способен к отклику в процессе работы

' - 0 завершении выполнения задачи пользователь вынужден только догадываться

'---------------------------------------------------------------------------

Private Sub Button1_Click(ByVal senderAs System.Object, _

 ByVal eAs System.EventArgs) Handles Button1.Click

 'Имитировать выполнение работы путем создания паузы продолжительностью

 '4 секунды

 System.Threading.Thread.Sleep(4000)

End Sub

'------------------------------------------------------------------------

'Пример лучших интерактивных возможностей интерфейса:

' + Визуальная индикация начала выполнения работы

' (появление курсора ожидания)

' + Визуальная индикация окончания выполнения работы

' (исчезновение курсора ожидания)

' - Пользовательский интерфейс не способен к отклику в процессе работы

' + По завершении выполнения задачи конечный пользователь узнает об этом,

' а пользовательский интерфейс восстанавливает способность к отклику

'------------------------------------------------------------------------

Private Sub Button2_Click(ByVal senderAs System.Object, _

 ByVal eAs System.EventArgs) Handles Button2.Click

 System.Windows.Forms.Cursor.Current = _

  System.Windows.Forms.Cursors.WaitCursor

 'Имитировать выполнение работы путем создания паузы продолжительностью

 '4 секунды

 System.Threading.Thread.Sleep(4000)

 System.Windows.Forms.Cursor.Current = _

  System.Windows.Forms.Cursors.Default

End Sub

'-------------------------------------------------------------------------

'Пример еще лучших интерактивных возможностей интерфейса:

' + Визуальная индикация начала выполнения работы

' (появление курсора ожидания)

' + Отображение дополнительного текста, сообщающего пользователю

' о том, что происходит

' + Визуальная индикация окончания выполнения работы

' (исчезновение курсора ожидания)

' - Пользовательский интерфейс не способен к отклику в процессе работы

' + По завершении выполнения задачи конечный пользователь узнает об этом,

' а пользовательский интерфейс восстанавливает способность к отклику

' + Текстовые сообщения информируют пользователя о том, что происходит

'-------------------------------------------------------------------------

Private Sub Button3_Click(ByVal senderAs System.Object, _

 ByVal e As System.EventArgs) Handles Button3.Click

 'Предоставить пользователю текст, информирующий его обо всем происходящем

 Label1.Text = "Ждите! Работа выполняется!"

 'Заставить ПИ обновить текст

 '(иначе он сделает это только тогда, когда будет перерисовывать сообщение,

 'а это может произойти и после выхода из данной функции)

 Label1.Update()

 'Отобразить курсор ожидания

 System.Windows.Forms.Cursor.Current = _

  System.Windows.Forms.Cursors WaitCursor

 'Имитировать выполнение работы путем создания паузы продолжительностью

 '2,8 секунды

 System.Threading.Thread.Sleep(2800)

 'Необязательное дополнительное обновление состояния

 Label1.Text = "Ждите! Работа близка к завершению!"

 Label1.Update()

 'Имитировать выполнение работы путем создания паузы продолжительностью

 '1,2 секунды

 System.Threading.Thread.Sleep(1200)

 'Известить пользователя текстовым сообщением о завершении работы

 '(текст обновляется всякий раз, когда ПИ выполняет обычное обновление

 'экрана)

 Label1.Text = "Работа успешно завершена!"

 'Избавиться от курсора ожидания

 System.Windows.Forms.Cursor.Current = _

  System.Windows.Forms.Cursors.Default

End Sub

Листинг 7.4. Сравнение производительности двух алгоритмов, в одном из которых используются исключения, а во втором — нет

'==================================================================

'Примечание. В этом примере используется класс PerformanceSampling,

' определенный ранее в этой главе. Убедитесь в том, что

' этот класс включен в проект

'ТЕСТОВАЯ ФУНКЦИЯ:

'Сложить n1 и n2 и возвратить результат

'в n3

' Возвращаемое значение:

' TRUE: если результат положителен

' FALSE: если результат отрицателен

'==================================================================

Function returnFalseIfLessThanZero_Add2Numbers( _

 ByVal n1As Integer, ByVal n2 As Integer, _

 ByRef n3 As Integer) As Boolean

 n3 = n1 + n2

 'Результат меньше 0?

 If (n3 < 0) Then

  Return False

 End If

 Return True

End Function

'========================================================================

'ТЕСТОВАЯ ФУНКЦИЯ:

'Сложить n1 и n2 и возвратить результат

'в n3

'Если n3 меньше 0, то функция ПЕРЕДАЕТ УПРАВЛЕНИЕ ОБРАБОТЧИКУ ИСКЛЮЧЕНИЙ.

'В противном случае возвращается TRUE

'========================================================================

Function exceptionIfLessThanZero_Add2Numbers( _

 ByVal n1As Integer, ByVal n2As Integer, _

 ByRef n3 As Integer) As Boolean

 n3 = n1 + n2

 'Результат меньше 0?

 If (n3 <0) Then

  Throw New Exception("Результат меньше 0!")

 End If

 Return True

End Function

'=======================================================

'Осуществляет многократные вызовы простой функции и

'измеряет общее время выполнения

'Вызываемая функция НЕ приводит к возбуждению исключений

'=======================================================

Private Sub buttonRunNoExceptionCode_Click(ByVal senderAs System.Object, _

 ByVal eAs System.EventArgs) Handles buttonRunNoExceptionCode.Click

 Const TEST_NUMBERAs Integer = 0

 Dim numberItterations As Integer

 numberItterations = _

  CInt(textBoxNumberAttempts.Text)

 'Отобразить количество итераций, которые предстоит выполнить

 ListBox1.Items.Add("=>" + numberItterations.ToString() + " итераций")

 Dim count_SumLessThanZero As Integer

 Dim dataOut As Integer

 '----------------

 'Запустить таймер

 '----------------

 PerformanceSampling.StartSample(TEST_NUMBER, "Исключения отсутствуют")

 '------------------------------------------------------

 'Выполнить цикл, в котором осуществляется вызов функции

 '------------------------------------------------------

 count_SumLessThanZero = 0

 Dim sumGreaterThanZero As Boolean

 Dim i As Integer

 While (i < numberItterations)

  '=========================

  'Вызвать тестовую функцию!

  '=========================

  sumGreaterThanZero = _

   returnFalseIfLessThanZero_Add2Numbers(-2, -3, dataOut)

  If (sumGreaterThanZero = False) Then

   count_SumLessThanZero = count_SumLessThanZero + 1

  End If

  i = i + 1

 End While

 '-----------------

 'Остановить таймер

 '-----------------

 PerformanceSampling.StopSample(TEST_NUMBER)

 '--------------------------------

 'Показать результаты пользователю

 '--------------------------------

 If (count_SumLessThanZero = numberItterations) Then

1 ... 178 179 180 181 182 183 184 185 186 ... 206
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Программирование мобильных устройств на платформе .NET Compact Framework - Иво Салмре.
Комментарии