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

Салмре Иво

Шрифт:

private void button1_Click(object sender, System.EventArgs e) {

long testItem;

testItem = System.Convert.ToInt64("123456789012345");

FindNextPrimeNumber nextPrimeFinder;

nextPrimeFinder = new FindNextPrimeNumber(testItem);

nextPrimeFinder.findNextHighestPrime;

long nextHighestPrime;

nextHighestPrime = nextPrimeFinder.getPrime;

System.Windows.Forms.MessageBox.Show(System.Convert.ToString(nextHighestPrime));

//Сколько времени заняли вычисления?

int calculation_time;

calculation_time = nextPrimeFinder.getTickCountDelta;

System.Windows.Forms.MessageBox.Show(System.Convert.ToString(calculation_time) + " мс");

}

//------------------------------------------------------------------------

// Код, обрабатывающий событие щелчка на кнопке Button2 формы

//

// Вызвать функцию поиска простого числа из другого потока!

// (Данный поток блокироваться не будет)

// Для отслеживания состояния выполнения задачи используем конечный автомат

//-------------------------------------------------------------------------

private void button2_Click(object sender, System.EventArgs e) {

long testItem;

testItem = System.Convert.ToInt64("123456789012345");

FindNextPrimeNumber nextPrimeFinder;

nextPrimeFinder = new FindNextPrimeNumber(testItem);

//------------------------------------

// Выполнить обработку в другом потоке

//------------------------------------

nextPrimeFinder.findNextHighestPrime_Async;

//Войти в цикл и ожидать до тех пор, пока не будет найдено

//простое число или выполнение не будет прекращено

while ((nextPrimeFinder.getProcessingState != FindNextPrimeNumber.ProcessingState.foundPrime) &&

(nextPrimeFinder.getProcessingState != FindNextPrimeNumber.ProcessingState.aborted)) {

//ТОЛЬКО В ТЕСТОВОМ КОДЕ:

//Отобразить окно сообщений и предоставить пользователю

//возможность убрать его с экрана.

//Это позволяет организовать паузу!

System.Windows.Forms.MessageBox.Show("Поиск продолжается... Щелкните на кнопке OK");

//Мы могли бы прекратить поиск путем следующего вызова функции:

//nextPrimeFinder.setProcessingState(

// FindNextPrimeNumber.ProcessingState.requestAbort);

}

//Осуществить корректный выход в случае прекращения поиска

if (nextPrimeFinder.getProcessingState == FindNextPrimeNumber.ProcessingState.aborted) {

System.Windows.Forms.MessageBox.Show("Поиск прекращен!");

return;

}

long nextHighestPrime;

nextHighestPrime = nextPrimeFinder.getPrime;

System.Windows.Forms.MessageBox.Show(System.Convert.ToString(nextHighestPrime));

//Сколько времени заняли вычисления?

int calculation_time;

calculation_time = nextPrimeFinder.getTickCountDelta;

System.Windows.Forms.MessageBox.Show(System.Convert.ToString(calculation_time) + " мс");

}

Для выполнения примера с использованием указанного в листинге начального числа (123456789012345) на моем эмуляторе Pocket РС требовалось от 10 до 20 секунд. Исследуйте зависимость времени вычислений от количества цифр в начальном числе. (Как правило, с увеличением количества цифр время вычислений увеличивается.)

  • Читать дальше
  • 1
  • ...
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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