Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- // Создать приложение, в котором генератор события может генерировать три разных события. Приемники событий выступают
- // в качестве абонентов почтового отделения и могут пересылать друг другу информацию, используя генератор в качестве почтового
- // ящика. При этом они указывают номер (от 1 до 3) следующего приемника и некоторое целое число, которое передается
- // получателю.Такой цикл передачи продолжается до тех пор, пока какой-либо из приемников в качестве получателя не укажет номер
- // ноль. В этом случае приложение завершает свою работу. При запуске приложения первое почтовое извещение всегда получает от
- // генератора первый приемник. Для адресации и передачи информации использовать второй аргумент обработчика события.
- namespace PostDepartment
- {
- class GenEvent
- {
- int sender;
- public int Sender
- {
- get
- {
- return sender;
- }
- set
- {
- sender = value;
- }
- }
- int receiver;
- public int Receiver
- {
- get
- {
- return receiver;
- }
- set
- {
- receiver = value;
- }
- }
- int message;
- public int Message
- {
- get
- {
- return message;
- }
- set
- {
- message = value;
- }
- }
- public delegate void NewEventHandler(object sender, EventArgs e);
- public event NewEventHandler NewEventForFirst;
- public event NewEventHandler NewEventForSecond;
- public event NewEventHandler NewEventForThird;
- EventArgs e = new EventArgs();
- public void EventGeneration(int sender, int receiver, int message)
- {
- this.sender = sender;
- this.receiver = receiver;
- this.Message = message;
- if (this.Sender == this.Receiver)
- Console.WriteLine("\n!!!Абонент не может отправить сообщение самому себе!!!");
- else
- switch (this.receiver)
- {
- case 0:
- Console.WriteLine("\nВ качестве получателя указан абонент 0. Завершение передачи сообщений между абонентами.");
- break;
- case 1:
- NewEventForFirst(this, e);
- break;
- case 2:
- NewEventForSecond(this, e);
- break;
- case 3:
- NewEventForThird(this, e);
- break;
- default:
- Console.WriteLine("\n!!!Неверный номер абонента-получателя!!!");
- break;
- }
- }
- class FirstReceiver
- {
- public void FirstEventHandler(object sender, EventArgs e)
- {
- GenEvent a = sender as GenEvent;
- if (a.Sender == 0)
- Console.WriteLine("\nАбонент 1 получил сообщение " + "\"" + a.Message + "\"" + " от почтового отделения");
- else
- Console.WriteLine("\nАбонент 1 получил сообщение " + "\"" + a.Message + "\"" + " от абонента " + a.Sender);
- }
- public FirstReceiver(GenEvent gnEvent)
- {
- gnEvent.NewEventForFirst += new GenEvent.NewEventHandler(FirstEventHandler);
- }
- }
- class SecondReceiver
- {
- public void SecondEventHandler(object sender, EventArgs e)
- {
- GenEvent a = sender as GenEvent;
- if (a.Sender == 0)
- Console.WriteLine("\nАбонент 2 получил сообщение " + "\"" + a.Message + "\"" + " от почтового отделения");
- else
- Console.WriteLine("\nАбонент 2 получил сообщение " + "\"" + a.Message + "\"" + " от абонента " + a.Sender);
- }
- public SecondReceiver(GenEvent gnEvent)
- {
- gnEvent.NewEventForSecond += new GenEvent.NewEventHandler(SecondEventHandler);
- }
- }
- class ThirdReceiver
- {
- public void ThirdEventHandler(object sender, EventArgs e)
- {
- GenEvent a = sender as GenEvent;
- if (a.Sender == 0)
- Console.WriteLine("\nАбонент 3 получил сообщение " + "\"" + a.Message + "\"" + " от почтового отделения");
- else
- Console.WriteLine("\nАбонент 3 получил сообщение " + "\"" + a.Message + "\"" + " от абонента " + a.Sender);
- }
- public ThirdReceiver(GenEvent gnEvent)
- {
- gnEvent.NewEventForThird += new GenEvent.NewEventHandler(ThirdEventHandler);
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- int sender = 0; // первый отправитель
- int receiver = 1; // первый получатель
- int message;
- GenEvent Generator = new GenEvent();
- FirstReceiver First = new FirstReceiver(Generator);
- SecondReceiver Second = new SecondReceiver(Generator);
- ThirdReceiver Third = new ThirdReceiver(Generator);
- Console.Write("Введите передаваемое сообщение: ");
- message = Convert.ToInt32(Console.ReadLine());
- Generator.EventGeneration(sender, receiver, message);
- while (receiver != 0) // цикл обмена сообщениями
- {
- if (receiver > 0 && receiver < 4)
- sender = receiver;
- Console.Write("Введите номер следующего абонента-получателя: ");
- receiver = Convert.ToInt32(Console.ReadLine());
- Console.Write("Что передать: ");
- message = Convert.ToInt32(Console.ReadLine());
- Generator.EventGeneration(sender, receiver, message);
- }
- Console.ReadKey(true);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement