Чтение онлайн

на главную - закладки

Жанры

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

Салмре Иво

Шрифт:

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

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

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

 if (m_findNextPrimeNumber.getProcessingState ==

FindNextPrimeNumber.ProcessingState.aborted) {

timer1.Enabled = false;

m_findNextPrimeNumber = null;

 setCalculationStatusText("Prime search aborted");

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

return;

 }

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

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

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

 if (m_findNextPrimeNumber.getProcessingState ==

FindNextPrimeNumber.ProcessingState.foundPrime) {

timer1.Enabled = false;

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

setCalculationStatusText("Found! Next Prime = " + m_findNextPrimeNumber.getPrime.ToString);

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

// m_findNextPrimeNumber.getPrime.ToString);

m_findNextPrimeNumber = null;

return;

 }

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

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

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

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

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

 long numberCalculationsToFar;

 long currentItem;

 m_findNextPrimeNumber.getExecutionProgressInfo(out numberCalculationsToFar,out currentItem);

 setCalculationStatusText("In progress. Looking at: " +

currentItem.ToString + ". " +

numberCalculationsToFar.ToString +

" calculations done for you so far!");

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

 // currentItem.ToString + ". " +

 // "Для вас выполнено " +

 // numberCalculationsToFar.ToString +

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

}

Листинг 9.5. Код класса FindNextPrimeNumber.cs

using System;

public class FindNextPrimeNumber {

 //Перечисляем возможные состояния

 public enum ProcessingState {

notYetStarted,

waitingToStartAsync,

lookingForPrime,

foundPrime,

requestAbort,

aborted

 }

 long m_startPoint;

 long m_NextHighestPrime;

 //Поиск какого количества элементов выполнен?

 long m_comparisonsSoFar;

 //Для какого элемента сейчас выполняется поиск простого числа?

 long m_CurrentNumberBeingExamined;

 //Вызывается для обновления информации о состоянии выполнения

 public void getExecutionProgressInfo(out long numberCalculationsSoFar, out long currentItemBeingLookedAt) {

//ПРИМЕЧАНИЕ. Мы используем блокирование потока для уверенности в том,

//что эти значения не считываются во время выполнения операции

//их записи. Поскольку доступ к m_comparisonsSoFar

//и m_CurrentNumberBeingExamined могут осуществлять

//одновременно несколько потоков, любая выполняемая над ними

//операция записи/считывания должна синхронизироваться с "блокировкой",

//что будет гарантировать "атомарность" этих операций

lock (this) {

numberCalculationsSoFar = m_comparisonsSoFar;

currentItemBeingLookedAt = m_CurrentNumberBeingExamined;

}

 }

 ProcessingState m_processingState;

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

 //Простейший конечный автомат

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

 public void setProcessingState(ProcessingState nextState) {

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

//Простейший защитный код, гарантирующий

//невозможность перехода в другое состояние, если задача

//либо успешно завершена, либо успешно отменена

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

if ((m_processingState == ProcessingState.aborted) ||

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

Агенты ВКС

Вайс Александр
3. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Агенты ВКС

Контртеррор

Валериев Игорь
6. Ермак
Фантастика:
альтернативная история
5.00
рейтинг книги
Контртеррор

Древесный маг Орловского княжества

Павлов Игорь Васильевич
1. Орловское княжество
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества

Тринадцатый X

NikL
10. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Тринадцатый X

Убийца

Бубела Олег Николаевич
3. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.26
рейтинг книги
Убийца

Черный маг императора 3

Герда Александр
3. Черный маг императора
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора 3

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Князь Андер Арес 3

Снега

Чепурин Юлий Петрович
Поэзия:
драматургия
5.00
рейтинг книги
Снега

Новые горизонты

Лисина Александра
5. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Новые горизонты

#Бояръ-Аниме. Газлайтер. Том 13

Володин Григорий Григорьевич
13. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
фэнтези
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 13

Страж Кодекса. Книга V

Романов Илья Николаевич
5. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга V

Эфемер

Прокофьев Роман Юрьевич
7. Стеллар
Фантастика:
боевая фантастика
рпг
7.23
рейтинг книги
Эфемер

Бастард Императора. Том 3

Орлов Андрей Юрьевич
3. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 3

Распутье

Басаргин Иван Ульянович
Сибириада
Проза:
военная проза
историческая проза
5.00
рейтинг книги
Распутье