Побудова програм потоків за допомогою стандартних бібліотек C#.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра програмного забезпечення

Інформація про роботу

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інформаційні технології
Група:
ПІ

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Інститут комп’ютерних наук та інформаційних технологій Кафедра програмного забезпечення ЗВІТ До лабораторної роботи № 3 На тему: “Побудова програм потоків за допомогою стандартних бібліотек C#.” З дисципліни : "Програмне забезпечення мережевих технологій " Лектор: Проф. каф. ПЗ Мельник Р.А. Львів – 2009 Лабораторна робота №3 Тема: побудова програм потоків за допомогою стандартних бібліотек C#. Мета: освоїти елементи програмування мовою C#, а також засвоїти класи і методи графічної бібліотеки awt (swing).Створити багато потокову програму з допомогою стандартних бібліотек. Завдання до лабораторної роботи 2.Створити C# потоки кульк. Хід роботи Сучасні операційні системи підтримують багатопотоковий режим, в якому програміст в межах кожного процесу може створювати декілька підпроцесів або потоків. Потоки відрізняються від процесів. В системі з малою кількістю потоків є самостійні процеси і зв’язані процеси, які спільно використовують програми опрацювання відкритих файлів. В багатопотоковій системі кожен процес складається з одного чи більше (до n) потоків, і всі вони спільно використовують як глобальні змінні, так і програми опрацювання відкритих файлів. Таке розділення глобальних змінних спрощує для потоків спільне використання ресурсів при одночасному виконанні поставлених їм задач. Код програми using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace Laba_33 { public partial class Form1 : Form { public int k2 = 1, k1 = 1; private Thread Thread2; private Thread Thread1; public Form1() { InitializeComponent(); Thread1 = new Thread(delegate() { Graphics gr; int x = 0; int y = 0; gr = Graphics.FromHwnd(pictureBox1.Handle); while (true) { pictureBox1.Height = 400; pictureBox1.Width = 400; gr.FillEllipse(new SolidBrush(pictureBox1.BackColor), x, y, 50, 50); if (k1 == 1) { x += 14; y += 7; } if (y <= 0 && x <= 400 - 54) k1 = 4; if (x <= 0 && y <= 400 - 54) k1 = 3; if (x >= 400 - 54 && y <= 400 - 54) { k1 = 5; } if (x <= 400 - 54 && y >= 400 - 54) { k1 = 6; } if (x >= 400 - 54) k1 = 2; if (y >= 400 - 54) k1 = 2; if (k1 == 2) { x -= 7; y -= 14; } if (k1 == 5) { x += 7; y -= 14; } if (k1 == 6) { y += 14; x -= 7; } if (k1 == 3) { x += 14; y -= 7; } if (k1 == 4) { y += 14; x -= 7; } gr.FillEllipse(new SolidBrush(Color.DarkGreen), x, y, 50, 50); Thread.Sleep(100); } }); Thread2 = new Thread(delegate() { pictureBox1.Height = 400; pictureBox1.Width = 400; Graphics gr; int x2 = 200; int y2 = 200; gr = Graphics.FromHwnd(pictureBox1.Handle); while (true) { gr.FillEllipse(new SolidBrush(pictureBox1.BackColor), x2, y2, 50, 50); if (k2 == 1) { x2 += 10; y2 += 5; } if (y2 <= 0 && x2 <= 400 - 53) k2 = 4; if (x2 <= 0 && y2 <= 400 - 53) k2 = 3; if (x2 >= 400 - 53 && y2 <= 400 - 53) { k2 = 5; } if (x2 <= 400 - 53 && y2 >= 400 - 53) { k2 = 6; } if (x2 >= 400 - 53) k2 = 2; if (y2 >= 400 - 53) k2 = 2; if (k2 == 2) { x2 -= 5; y2 -= 5; } if (k2 == 5) { x2 += 5; y2 -= 10; } if (k2 == 6) { y2 += 10; x2 -= 5; } if (k2 == 3) { x2 += 10; y2 -= 5; } if (k2 == 4) { y2 += 10; x2 -= 5; } gr.FillEllipse(new SolidBrush(Color.DarkBlue), x2, y2, 50, 50); Thread.Sleep(100); } }); CheckForIllegalCrossThreadCalls = false; } void StartThread(Thread t2) { if (t2.ThreadState == ThreadState.Unstarted) { t2.Start(); } } public int i = 0; public int k = 0; void SuspendThread(Thread t3) { t3.Suspend(); } void ResumeThread(Thread t3) { t3.Resume(); } private void button1_Click_1(object sender, EventArgs e) { StartThread(Thread1); } private void button2_Click(object sender, EventArgs e) { SuspendThread(Thread1); } private void button3_Click(object sender, EventArgs e) { if (Thread1.ThreadState == ThreadState.Suspended) Thread1.Resume(); } private void button4_Click(object sender, EventArgs e) { StartThread(Thread2); } private void button5_Click(object sender, EventArgs e) { SuspendThread(Thread2); } private void button6_Click(object sender, EventArgs e) { if (Thread2.ThreadState == ThreadState.Suspended) Thread2.Resume(); } } } Протокол роботи програми  Висновок: Я освоїв елементи програмування мовою C#, а також засвоїти основні особливості створення потоків з допомогою стандартної бібліотеки. Мною було розроблено C# програму, що створює два різних потоки і в кожному з них виводить певну стрічку.
Антиботан аватар за замовчуванням

28.01.2013 17:58

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!