Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework
- Название:Программирование мобильных устройств на платформе .NET Compact Framework
- Автор:
- Жанр:
- Издательство:Издательский дом Вильямс
- Год:2006
- Город:Москва • Санкт-Петербург • Киев
- ISBN:5-8459-0989-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Иво Салмре - Программирование мобильных устройств на платформе .NET Compact Framework краткое содержание
Книга известного профессионала в области компьютерных технологий посвящена разработке приложений для широкого спектра мобильных устройств с использованием популярной и постоянно развивающейся платформы .NET Compact Framework. Уникальность этой книги состоит в том, что в ней гармонично переплетены теоретические сведения обо всем цикле разработки программного обеспечения с практическими примерами применения на языках С# и Visual Basic. Подробно рассматриваются концепции, лежащие в основе самой платформы .NET Compact Framework, а также вопросы, связанные с созданием эффективного пользовательского интерфейса, управлением памятью, производительностью и надежностью. Немалое внимание уделяется практическим аспектам разработки приложений для мобильных устройств, среди которых выбор модели представления и доступа к данным, внедрение коммуникационной модели, реализация модели поведения с помощью конечных автоматов и использование XML.
Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.
Программирование мобильных устройств на платформе .NET Compact Framework - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
//Создать экземпляр вспомогательного класса,
//который расчленяет строку на три части
//
//Это неэкономный способ!
//-------------------------------------------
workerClass1 = new WastefulWorkerClass(testArray[idx]);
//Если средним словом является "blue", заменить его на "orange"
if (workerClass1.MiddleSegment == "blue") {
//Заменить средний сегмент
workerClass1.MiddleSegment = "orange";
//Заменить слово
testArray[idx] = workerClass1.getWholeString();
}
} //конец внутреннего цикла for
}//конец внешнего цикла for
//Получить время окончания теста
PerformanceSampling.StopSample(0);
System.Windows.Forms.MessageBox.Show(PerformanceSampling.GetSampleDurationText(0));
}
using System;
public class WastefulWorkerClass {
private string m_beginning_segment;
public string BeginSegment {
get { return m_beginning_segment; }
set { m_beginning_segment = value; }
}
private string m_middle_segment;
public string MiddleSegment {
get { return m_middle_segment; }
set { m_middle_segment = value; }
}
private string m_end_segment;
public string EndSegment {
get { return m_end_segment; }
set { m_end_segment = value; }
}
public WastefulWorkexClass(string in_word) {
int index_segment1;
//Осуществляем поиск символов подчеркивания ("_") в строке
index_segment1 = in_word.IndexOf("_",0);
//B случае отсутствия символов "_" все, что нам нужно, это первый сегмент
if (index_segment1 == -1) {
m_beginning_segment = in_word;
m_middle_segment = "";
m_end_segment = "";
return;
}
//Если присутствует символ "_", усечь его
else {
//Если первым символом является "_", то первым сегментом будет ""
if (index_segment1 == 0) {
m_beginning_segment = "";
} else {
//Первый сегмент
m_beginning_segment = in_word.Substring(0, index_segment1);
}
//Найти второй символ "_"
int index_segment2;
index_segment2 = in_word.IndexOf("_", index_segment1 + 1);
//Второй символ "_" отсутствует
if (index_segment2 == -1) {
m_middle_segment = "";
m_end_segment = in_word.Substring(index_segment1 + 1);
return;
}
//Установить последний сегмент
m_middle_segment = in_word.Substring(index_segment1 + 1, index_segment2 - index_segment1 -1);
m_end_segment = in word.Substring(index segment2 + 1);
}
//Возвращает все три сегмента, объединенные символами "_"
public string getWholeString() {
return m_beginning_segment + "_" + m_middle_segment + "_" + m_end_segment;
}
} //конец класса
Повторно используйте размещенные в памяти объекты при любом удобном случае
Создание экземпляра вспомогательного класса в каждой итерации цикла обработки является большим расточительством. Несмотря на относительно малые размеры объекта, содержащего всего лишь несколько элементов данных, его обработка приводит к дополнительным накладным расходам. Кроме того, каждый раз, когда создается очередной экземпляр объекта, прежний экземпляр освобождается. В результате этого образуется мусор, который впоследствии должен быть убран. От напрасного размещения объектов в памяти мы можем легко избавиться.
Примечание. В этом примере используется класс PerformanceSampling, определенный ранее в данной книге.
private void button3_Click(object sender, System.EventArgs e) {
//Вызвать сборщик мусора, чтобы тест
//начинался с чистого состояния.
//ПРИБЕГАЙТЕ К ЭТОЙ МЕРЕ ТОЛЬКО В ЦЕЛЯХ ТЕСТИРОВАНИЯ! Вызовы
//сборщика мусора в программах вручную будут приводить к снижению
//общей производительности приложений!
System.GC.Collect();
string[] testArray = null;
//--------------------------------------------
//Просмотреть элементы массива и найти
//те из них, в которых средним словом является
//"blue". Заменить "blue" на "orange"
//--------------------------------------------
//Запустить секундомер!
PerformanceSampling.StartSample(1, "LessWasteful");
//--------------------------------------------
//БОЛЕЕ ЭКОНОМНЫЙ СПОСОБ: Распределить память
//для объекта до вхождения в цикл
//--------------------------------------------
LessWastefulWorkerClass workerClass1;
workerClass1 = new LessWastefulWorkerClass();
int outerLoop;
for (outerLoop = 0; outerLoop < LOOP_SIZE; outerLoop++) {
//Присвоить элементам массива значения, которые
//мы хотим использовать при тестировании
ResetTestArray(ref testArray);
int topIndex = testArray.Length - 1;
for(int idx = 0; idx <= topIndex; idx++) {
//---------------------------------------------------------
//Теперь вместо повторного распределения памяти для объекта
//нам достаточно лишь повторно воспользоваться им
//---------------------------------------------------------
//workerClass1 = new WastefulWorkerClass(
// testArray[topIndex]);
workerClass1.ReuseClass(testArray[idx]);
//Если средним словом является "blue", заменить его на "orange"
if (workerClass1.MiddleSegment == "blue") {
//Заменить средний сегмент
workerClass1.MiddleSegment = "orange";
//Заменить слово
testArray[idx] = workerClass1.getWholeString();
}
}
}
//Остановить секундомер!
PerformanceSampling.StopSample(1);
System.Windows.Forms.MessageBox.Show(PerformanceSampling.GetSampleDurationText(1));
}
using System;
public class LessWastefulWorkerClass {
private string m_beginning_segment;
public string BeginSegment {
get { return m beginning_segment; }
set { m_beginning_segment = value; }
}
private string m_middle_segment;
public string MiddleSegment {
get { return m_middle_segment; }
set { m_middle segment = value; }
}
private string m_end_segment;
public string EndSegment {
get { return m_end_segment; }
set { m_end_segment = value; }
}
public void ReuseClass(string in word) {
//----------------------------------------------
//Для повторного использования класса необходимо
//полностью очистить внутреннее состояние
//----------------------------------------------
m_beginning_segment = "";
m_middle_segment = "";
m_end_segment = "";
int index_segment1;
//Осуществляем поиск символов подчеркивания (" ") в строке
index segment1 = in_word.IndexOf(" ",0);
//B случае отсутствия символов " " все, что нам нужно, это первый сегмент
if (index_segment1 == -1) {
m_beginning_segment = in_word;
return;
}
//Если присутствует символ " ", усечь его
else {
if (index_segment1 == 0) {
} else {
m_beginning_segment = in_word.Substring(0, index_segment1);
}
int index_segment2;
index_segment2 = in_word.IndexOf("_", index_segment1 + 1);
if (index_segment2 == -1) {
m_end_segment = in_word.Substring(index_segment1 + 1);
Интервал:
Закладка: