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

Листинг 9.3. Код для запуска и тестирования приведенного выше тестового кода

Листинг 9.3. Код для запуска и тестирования приведенного выше тестового кода

'Класс, который будет управлять выполнением нового потока
Private m_threadExecute As ThreadExecuteTask
'Класс, метод которого мы хотим выполнять в асинхронном режиме
Private m_testMe As Test1
'-----------------------------------------------------------------------
'Этот код должен быть запущен ранее другого кода, поскольку он запускает
'новый поток выполнения!
'
'Создать новый поток и обеспечить его выполнение
'-----------------------------------------------------------------------
Private Sub buttonStartAsyncExecution_Click(ByVal sender _
 As System.Object, ByVal e As System.EventArgs) _
 Handles buttonStartAsyncExecution.Click
 'Создать экземпляр класса, метод которого мы хотим вызвать
 'в другом потоке
 m_testMe = New Test1
 'Упаковать точку входа метода класса в делегат
 Dim delegateCallCode As _
  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

Оглавление книги


Генерация: 1.737. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз