ThreadExecuteTask.ExecuteMeOnAnotherThread
delegateCallCode = _
New ThreadExecuteTask.ExecuteMeOnAnotherThread(AddressOf _
m_testMe.ThreadEntryPoint)
'Дать команду начать выполнение потока!
m_threadExecute = New ThreadExecuteTask(delegateCallCode)
End Sub
'Принудительно вызвать запрещенное изменение состояния (это приведет
'к возбуждению исключения)
Private Sub buttonCauseException_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles buttonCauseException.Click
m_threadExecute.setProcessingState( _
ThreadExecuteTask.ProcessingState.notYetStarted)
End Sub
'Послать асинхронному коду запрос с требованием отмены его выполнения
Private Sub buttonAbort_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles buttonAbort.Click
m_threadExecute.setProcessingState( _
ThreadExecuteTask.ProcessingState.requestAbort)
End Sub
'Проверить состояние выполнения
Private Sub buttonCheckStatus_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ButtonCheckStatus.Click
'Запросить у класса управления потоком, в каком состоянии он находится
MsgBox(m_threadExecute.State.ToString)
'Запросить класс, метод которого выполняется в потоке,
'o состоянии выполнения
MsgBox(m_testMe.m_loopX.ToString)
End Sub
'------------------------------------------------------
'Весь этот код должен находиться внутри класса Form1.cs
'------------------------------------------------------
'Объект, который будет выполнять все фоновые вычисления
Private m_findNextPrimeNumber As FindNextPrimeNumber
'--------------------------------------------
'Обновить текст, информирующий о состоянии...
'--------------------------------------------
Sub setCalculationStatusText(ByVal text As String)
Label1.Text = text
End Sub
Private Sub menuItemExit_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles menuItemExit.Click
Me.Close
End Sub
'----------------------------------------
'Пункт меню для начала фоновых вычислений
'----------------------------------------
Private Sub menuItemStart Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles menuItemStart.Click
'Число, с которого мы хотим начать поиск
Dim startNumber As Long = System.Convert.ToInt64(TextBox1.Text)
'Установить фоновое выполнение
m_findNextPrimeNumber = New FindNextPrimeNumber(startNumber)
'Запустить выполнение задачи в фоновом режиме...
m_findNextPrimeNumber.findNextHighestPrime_Async
'Установить таймер, используемый для контроля длительности вычислений