Файл: Параллель3 - реализовать параллельные вычисления с помощью асинхронного делегата.docx

Добавлен: 13.02.2019

Просмотров: 348

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа №3 («Асинхронные делегаты»)

Золотых Светлана, 2161121

Задание: реализовать параллельные вычисления с помощью асинхронного делегата

Код программы:

namespace Async1

{

class Program

{

static void Main(string[] args)

{

//создание экземпляра класса от родителя

Parser parse = new Client();

parse.EventParse += Args;

while (true)

{

Console.WriteLine("Параллельное вычисление");

System.Threading.Thread.Sleep(1000);

}

}

static void Args(object sander, EventHendlerParseStr e)

{

//вывод значения messege

Console.WriteLine(e.Messege);

}

}

class Parser

{

//объявление делегата

protected delegate string DelegateGetMessege();

//объявление события

public event EventHandler<EventHendlerParseStr> EventParse;

public Parser(){ }

protected void ParseStr(string message)

{

if (EventParse != null)

//передача сообщения с сервера в конструктор класса

EventParse(this, new EventHendlerParseStr(string.Format("Количество шагов: {0}", message)));

}

}

class Client : Parser

{

public Client()

{

//передача метода в делегат

DelegateGetMessege handl = new DelegateGetMessege(GetMessege);

//запуск асинхронного делегата

handl.BeginInvoke(null, null);

}

protected string GetMessege()

{

//функция выполнения последовательных шагов

int cont = 0;

while (true)

{

ParseStr(cont.ToString());

cont++;

System.Threading.Thread.Sleep(1000);

}

}

}

class EventHendlerParseStr : EventArgs

{

//передача переменной messege значение в конструкторе

public EventHendlerParseStr(string messege)

{

Messege = messege;

}

//переменную можно только считывать

public string Messege { get; private set; }

}

Результат:


Вывод:

Разработано консольное приложение, реализовывающее получение строки на сервер и её автоматическую обработку. Для этого были созданы класс Parse и наследуемый от него класс Client. В первом классе реализовывается объявление делегата DelegateGetMessege, а во втором ему присваивается метод GetMessege и запускается асинхронный делегат. Также был создан класс EventHendlerParseStr, в конструкторе которого происходит присвоение значения переменной messege. Создан метод Args для вывода этой переменной, т.е. самого сообщения.