numberToStore = numberToStore + 1
Next
'Имитируем выполнение некоторых операций над строкой...
total_result = sb.ToString
Next
PerformanceSampling StopSample(1)
'Отобразить длину строки
MsgBox("Длина строки: " + total_result.Length.ToString)
'Отобразить строку
MsgBox("String : " + total_result)
'Отобразить длительность интервала времени, ушедшего на вычисления
MsgBox(PerformanceSampling.GetSampleDurationText(1))
End Sub
Примеры к главе 9 (производительность и многопоточное выполнение)
Option Strict On
Imports System
Public Class ThreadExecuteTask
'Перечисляем возможные состояния
Public Enum ProcessingState
'-------------------
'Начальное состояние
'-------------------
'Перечисляем возможные состояния
notYetStarted
'-----------------
'Рабочие состояния
'-----------------
'Ожидание запуска фонового потока
waitingToStartAsync
'Выполнение кода в фоновом потоке
running
'Запросить отмену выполнения вычислений
requestAbort
'--------------------
'Состояния завершения
'--------------------
'Состояние завершения: выполнение фонового потока
'успешно завершено
done
'Состояние завершения: выполнение потока отменено
'до его завершения
aborted
End Enum
Private m_processingState As ProcessingState
Public Delegate Sub ExecuteMeOnAnotherThread(_
ByVal checkForAborts As ThreadExecuteTask)
Private m_CallFunction As ExecuteMeOnAnotherThread
Private m_useForStateMachineLock As Object
Public Sub New(ByVal functionToCall As ExecuteMeOnAnotherThread)
'Создать объект, который мы можем использовать в конечном автомате
'в целях блокировки
m_useForStateMachineLock = New Object
'Обозначить готовность к началу выполнения
m_processingState = ProcessingState.notYetStarted
'Сохранить функцию, которую необходимо вызвать
'в новом потоке
m CallFunction = functionToCall
'----------------------------------------------------------
'Создать новый поток и вызвать в нем функцию на выполнение:
' this.ThreadStartPoint
'----------------------------------------------------------
Dim threadStart As System.Threading.ThreadStart threadStart = _
New System.Threading.ThreadStart(AddressOf ThreadStartPoint)
Dim newThread As System.Threading.Thread
newThread = New System.Threading.Thread(threadStart)
'Обозначить готовность к началу выполнения (в целях определенности
'это важно сделать еще до того, как будет запущен поток!)
setProcessingState(ProcessingState.waitingToStartAsync)
'Дать ОС команду начать выполнение нового потока в асинхронном режиме
newThread.Start
'Возвратить управление функции, вызывающей этот поток
End Sub