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

Салмре Иво

Шрифт:

'Создать экземпляр класса, метод которого мы хотим вызвать

'в другом потоке

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

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

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

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

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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