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

Салмре Иво

Шрифт:

'Установить таймер, используемый для контроля длительности вычислений

Timer1.Interval = 400 '400 мс

Timer1.Enabled = True

End Sub

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

'Пункт меню для "отмены" выполняющейся задачи

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

Private Sub menuItemAbortClick(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles menuItemAbort.Click

'Не делать ничего, если вычисления не выполняются

If (m_findNextPrimeNumber Is Nothing) Then Return

'Установить поток в состояние прекращения выполнения

m_findNextPrimeNumber.setProcessingState( _

FindNextPrimeNumber.ProcessingState.requestAbort)

'Немедленно известить пользователя 'o готовности прекратить выполнение...

setCalculationStatusText("Ожидание прекращения выполнения...")

End Sub

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

'Этот таймер, вызываемый потоком пользовательского интерфейса,

'позволяет отслеживать состояние выполнения 'фоновых вычислений

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

Private Sub Timer1_Tick(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Timer1.Tick

'Если к моменту вызова искомое простое число еще

'не было найдено, отключить таймер

If (m_findNextPrimeNumber Is Nothing) Then

Timer1.Enabled = False

Return

End If

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

'Если выполнение было отменено, освободить объект,

'осуществляющий поиск, и выключить таймер

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

If (m_findNextPrimeNumber.getProcessingState = _

FindNextPrimeNumber.ProcessingState.aborted) Then

Timer1.Enabled = False

m_findNextPrimeNumber = Nothing

setCalculationStatusText("Поиск простого числа отменен")

Return

End If

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

'Удалось ли найти правильный ответ?

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

If (m_findNextPrimeNumber.getProcessingState = _

FindNextPrimeNumber.ProcessingState.foundPrime) Then

Timer1.Enabled = False

'Отобразить результат

setCalculationStatusText("Число найдено! Следующее простое число = " + _

m_findNextPrimeNumber.getPrime.ToString)

m_findNextPrimeNumber = Nothing

Return

End If

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

'Вычисления продолжаются. Информировать

'пользователя о состоянии выполнения...

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

'Получить два выходных значения

Dim numberCalculationsToFar As Long

Dim currentItem As Long

m_findNextPrimeNumber.getExecutionProgressInfo( _

numberCalculationsToFar, currentItem)

setCalculationStatusText("Вычисления продолжаются. Поиск в области: " + _

CStr(currentItem) + ". " + _

"Для вас выполнено " + CStr(numberCalculationsToFar) + _

" расчетов!")

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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