Return m_perfSamplesDuration(sampleIndex)
End Function
'Возвращает длительность истекшего тестового
' интервала в секундах
Friend Shared Function GetSampleDurationText(ByVal _
sampleIndexAs Integer) As String
Return m_perfSamplesNames(sampleIndex) + ": " + _
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
Читать дальше