Файл: Параллель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 для вывода этой переменной, т.е. самого сообщения.