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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Інститут комп’ютерних наук та інформаційних технологій Кафедра програмного забезпечення ЗВІТ До лабораторної роботи № 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:01-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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