Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

'Если затребована отмена выполнения, мы должны завершить задачу

If (threadExecute.State = _

ThreadExecuteTask.ProcessingState.requestAbort) Then

threadExecute.setProcessingState( _

ThreadExecuteTask.ProcessingState.aborted)

Return

End If

'Имитировать выполнение работы: пауза 1/3 секунды

System.Threading.Thread.Sleep(333)

 Next

End Sub

End Class

Листинг 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

Листинг 9.4. Код, который должен быть помещен в класс Smartphone Form1.cs

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

'Весь этот код должен находиться внутри класса Form1.cs

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

'Объект, который будет выполнять все фоновые вычисления

  • Читать дальше
  • 1
  • ...
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: