public partial class Form1 : Form 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

public partial class Form1 : Form



{

   public Form1()

   {

       InitializeComponent();

   }

// Функция-обработчик события щелчка по кнопке

   private void button1_Click(object sender, EventArgs e)

   {

// Создание объекта потока, являющегося основным по умолчанию

       Thread myThread = new Thread(new Thread

        Start (formatMethod));

 

// Запуск потока на выполнение

       myThread.Start();

   }

   // Метод, выполняемый во вторичном потоке

   private void formatMethod()

   {

       for (int i = 0; i < 100; i++)

       {

// Приостановка выполнения вторичного потока на 100 мс

          Thread.Sleep(100);

           progressBar1.Increment(1);

       }

       MessageBox.Show(" Форматирование завершено!");

}

}

Каким быть потоку: основным или фазовым, определяет свойство IsBackground. Это свойство по умолчанию установлено в значение false, что означает, что поток основной. Если свойство IsBackground установить в значение true, то это будет говорить о том, что поток фоновый. 

В листинге 9.3 показано, как следует изменить код метода-обработчика щелчка по кнопке из листинга 9.2, чтобы созданный поток стал фоновым. Теперь, если нажать кнопку закрытия окна, то приложение завершится вместе со своими потоками.

Листинг 9.3. Модификация кода функции-обработчика щелчка по кнопке в приложении, имитирующем процесс форматирования диска (созданный поток является фоновым)

 

   private void button1_Click(object sender, EventArgs e)

   {

// Создание обьекта потока с именем myThread

     Thread myThread = new Thread(new ThreadStart(formatMethod));

// Установка потока как фонового

      myThread.IsBackground = true;

// Запуск потока на выполнение

      myThread.Start();

}

Однако фоновые потоки имеют и определенные недостатки. Так, если приложение выполняет вычисления, то сделать этот поток фоновым вполне допустимо, но если поток выполняет только запись данных в файл или форматирует диск, то преждевременная остановка потока может привести к потере информации в файле или порче носителя. Поэтому подобные потоки необходимо делать основными.

Порядок выполнения работы

 

1. Изучить теоретические сведения и примеры, представленные выше.

2. Ответить на контрольные вопросы.

3. Разработать Windows - приложение в соответствии с вариантом практического задания.

4. Составить отчет в электронном виде, который должен содержать титульный лист, цель лабораторной работы, задание, ответы на контрольные вопросы, листинг программы и результаты ее работы.

 

Контрольные вопросы и задания

1.  Дайте определение многопоточности потока.

2.  Какой объект называется процессом?

3.  Перечислите цели создания многопоточных приложений.

4.  Какой поток называется первичным?

5.  Приведите примеры приложений, в которых целесообразно создавать дополнительные потоки.

6.  С помощью какого класса выполняется создание и управление потоками?

7.  Каким образом потоку можно присвоить имя?

8.  Какой параметр передается конструктору класса Thread при создании потока?

9.  В чем состоят различия между основным и фоновым потоками?

10.  Какое свойство класса Thread позволяет установить тип потока?

11.  Каким образом можно приостановить выполнение потока на определенное время?

12.  Перечислите проблемы, возникающие при создании многопоточных приложений.

Варианты практических заданий

 

Во всех вариантах заданий требуется создать приложение с интерфейсом Windows Forms.

Варианты заданий 1–16 приведены в табл. 9.2. В этих заданиях необходимо создать фоновый поток, в котором вычисление указанной в таблице функции выполняется с точностью ξ = 0,000 01, а сама функция представляется в виде суммы членов ряда. Кроме того, необходимо предусмотреть обработку введенных данных с проверкой их корректности и выдачу результата или сообщения об ошибке. Вычисленное значение следует выводить в компонент, отображающий информацию.

В вариантах заданий 17–22 требуется реализовать в фоновых потоках действия, указанные в условии задания.

 

Таблица 9.2

Варианты практических заданий 1–16

№ варианта Функция Формула для вычисления
1 ех
2 sin x

Продолжение  табл. 9.2

№ варианта Функция Формула для вычисления
3 cos x
4
5
6
7 sh x
8 ch x
9
10
11
12
13
14

 

 

Окончание табл. 9.2

№ варианта Функция Формула для вычисления
15
16

17. В фоновом потоке получить список простых чисел в указанном пользователем интервале.

18. Упорядочить содержимое файла по возрастанию, используя фоновый поток.

19. Создать в отдельном потоке А массив из N целых случайных чисел в диапазоне от –999 до 999 и вывести на экран эти числа.

Создание и вывод элементов массива должны производиться через заданное время T, значения N и T – вводиться пользователем до запуска процесса. Массив должен обрабатываться двумя другими потоками В и С, работающими параллельно с потоком, создающим массив. Все потоки должны выводить результаты своей работы в текстовые окна, каждый поток в свое окно.

20. Создать четыре потока: main (главный поток), который запускает потоки inc, dec и print.

Главный поток должен постоянно (каждые 10 мс) проверять значение переменной ACCOUNT и завершать процесс, если эта переменная вышла за границы диапазона [–10000, +10000].

Поток inc должен время от времени (паузы выбираются случайным образом от 100 мс и до 3 с включительно) увеличивать значение переменной ACCOUNT на некоторую случайную величину, например от 1 до 100.

Поток dec должен время от времени (паузы выбираются случайным образом от 100 мс и до 3 с включительно) уменьшать значение переменной ACCOUNT на некоторую случайную величину, например от 1 до 100.

Поток print должен выводить на экран новое значение переменной ACCOUNT, как только оно изменилось.

21. Создать два потока: главный и вторичный. Главный поток программы должен считывать вводимые пользователем строки и помещать их в начало связанного списка. При вводе пустой строки программа должна выдавать текущее состояние списка. Вторичный поток должен пробуждаться каждые 5 с и сортировать список в алфавитном порядке.

22. В фоновом потоке выполнить вычисление числа π по ряду Лейбница с точностью до четвертого знака после запятой. Ряд Лейбница имеет вид

 

 
 


Послесловие

Учебная дисциплина «Объектно-ориентированное программирование» состоит из лекций и лабораторных работ и нацелена на формирование у студентов теоретических знаний в области разработки программного обеспечения с использованием методологии объектно-ориентированного программирования и практических навыков по их применению

Темы, затронутые в данном лабораторном практикуме, ориентируют студентов на то, чтобы они смогли получить следующие знания,  умения и навыки:

– знание принципов объектно-ориентированного программирования;

– умение создавать классы на языке C#;

– умение применять стандартную библиотеку классов Framework Class Library платформы .NET;

– навыки разработки интерфейса программного обеспечения информационных систем;

– навыки разработки программных продуктов на языке C# на основе объектно-ориентированного подхода;

– умение выполнять разработку программного обеспечения
в среде Visual Studio.NET.

Для изучения теоретической части дисциплины студентам не следует ограничиваться предлагаемым практикумом. Им необходимо использовать и другие учебные издания, в качестве которых можно рекомендовать материалы электронного учебно-методического комплекса дисциплины (ЭУМКД), с которыми можно ознакомиться на сервере дистанционного образования СибГАУ по адресу: http://dl.sibsau.ru/course. Там же можно найти рабочую программу дисциплины, график и рейтинг-план ее изучения.

Кроме того, для более полного изучения тем дисциплины «Объектно-ориентированное программирование» читатели могут обратиться к рекомендуемой автором литературе, приведенной в библиографическом списке.

Автор надеется, что в результате изучения предложенного им материала и выполнения заданий практикума читатели научатся как создавать собственные классы, так и использовать библиотеку классов платформы .NET для разработки своих приложений.

 
 


Библиографический список

 

 

1. Биллиг, В. А. Объектное программирование в классах на C# 3.0 [Электронный ресурс] / В. А. Биллиг. – Электрон. дан. – Режим доступа: http://www.intuit.ru/department/pl/oopincsharp30/. – Загл. с экрана.

2. Вдовенко, В. В. Разработка приложений на языке C#: учеб. пособие / В. В. Вдовенко; Сиб. гос. аэрокосмич. ун-т. – Красноярск, 2010. – 296 с.: ил.

3. Вдовенко, В. В. Язык моделирования UML [Электронный ресурс]: учеб. пособие для студентов направления подготовки 230400.62 «Информационные системы» / В. В. Вдовенко; Сиб. гос. аэрокосмич. ун-т. – Электрон. дан. – Красноярск, 2011. – Режим доступа: http://www.libray.sibsau.ru. – Загл. с экрана.

4. Зиборов, В. В. Visual С# 2010 на примерах / В. В. Зиборов. – СПб.: БХВ-Петербург, 2011. – 432 с.

5. Мартин, Р. Принципы, паттерны и методики гибкой разработки на языке C#: пер. с англ. / Р. Мартин, М. Мартин. – СПб.: Символ-Плюс, 2011. – 768 с.: ил.

6. Павловская, Т. А. С#. Программирование на языке высокого уровня: учебник для вузов / Т. А. Павловская. – СПб.: Питер, 2007. – 432 c.: ил.

7. Пугачев, С. В. Разработка приложений для Windows 8 на языке C# / С. В. Пугачев, А. М. Шериев, К. А. Кичинский. – СПб.: БХВ-Петербург, 2013. — 416 с.: ил.

8. Стиллмен Э. Изучаем С# / Э. Стиллмен, Дж. Грин. – 2-е изд. – СПб.: Питер, 2012. – 696 с.: ил.

9. Уотсон, К. Visual C# 2010: полный курс: пер. с англ. /
К. Уотсон, К. Нейгел, Х. Педерсен. – М.: Вильямс, 2011. – 960 с.: ил.

10. Фаронов, В. В. Программирование на языке C# / В. В. Фаронов. – СПб.: Питер, 2007. – 240 с.: ил.

11. Фленов, М. Е. Библия C# / М. Е. Фленов. – СПб.: БХВ-Петербург, 2011. – 560 с.

 

 

 
 


Учебно-практическое издание

 

Вдовенко Валентина Васильевна

 

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ

ПРОГРАММИРОВАНИЕ

Лабораторный практикум

 

 

 
 

 


Редактор Е. Г. Некрасова

Оригинал-макет и верстка А. А. Ловчиковой

 

 

Подписано в печать 11.11.2014. Формат 60×84/16. Бумага офсетная.

Печать плоская. Усл. печ. л. 6,0. Уч.-изд. л. 6,7. Тираж 55 экз.

Заказ        С 125/14.

 

Санитарно-эпидемиологическое заключение

№ 24.49.04.953.П.000032.01.03 от 29.01.2003 г.

 

Редакционно-издательский отдел Сиб. гос. аэрокосмич. ун-та.

Отпечатано в отделе копировально-множительной техники

Сиб. гос. аэрокосмич. ун-та.

 
660014, г. Красноярск, просп. им. газ. «Красноярский рабочий», 31.



Поделиться:


Последнее изменение этой страницы: 2022-09-03; просмотров: 35; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.109.30 (0.031 с.)