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

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

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

№ варианта Функция Формула для вычисления
  cos x
 
 
 
  sh x
  ch x
 
 
 
 
 
 

 

 

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

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

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.

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

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

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

 
 
 




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-09-06 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: