Advertisement
Maxim_Kuraksin

UsingEvents

Nov 1st, 2017
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.38 KB | None | 0 0
  1. using System;
  2.  
  3.     //  Создать приложение, в котором генератор события может генерировать три разных события. Приемники событий выступают
  4.     //  в качестве абонентов почтового отделения и могут пересылать друг другу информацию, используя генератор в качестве почтового
  5.     //  ящика. При этом они указывают номер (от 1 до 3) следующего приемника и некоторое целое число, которое передается
  6.     //  получателю.Такой цикл передачи продолжается до тех пор, пока какой-либо из приемников в качестве получателя не укажет номер
  7.     //  ноль. В этом случае приложение завершает свою работу. При запуске приложения первое почтовое извещение всегда получает от
  8.     //  генератора первый приемник. Для адресации и передачи информации использовать второй аргумент обработчика события.
  9.  
  10.  
  11. namespace PostDepartment
  12. {
  13.     class GenEvent
  14.     {
  15.         int sender;
  16.         public int Sender
  17.         {
  18.             get
  19.             {
  20.                 return sender;
  21.             }
  22.  
  23.             set
  24.             {
  25.                 sender = value;
  26.             }
  27.         }
  28.  
  29.         int receiver;
  30.         public int Receiver
  31.         {
  32.             get
  33.             {
  34.                 return receiver;
  35.             }
  36.  
  37.             set
  38.             {
  39.                 receiver = value;
  40.             }
  41.         }
  42.  
  43.         int message;
  44.         public int Message
  45.         {
  46.             get
  47.             {
  48.                 return message;
  49.             }
  50.  
  51.             set
  52.             {
  53.                 message = value;
  54.  
  55.             }
  56.         }
  57.  
  58.  
  59.         public delegate void NewEventHandler(object sender, EventArgs e);
  60.  
  61.         public event NewEventHandler NewEventForFirst;
  62.  
  63.         public event NewEventHandler NewEventForSecond;
  64.  
  65.         public event NewEventHandler NewEventForThird;
  66.  
  67.         EventArgs e = new EventArgs();
  68.  
  69.         public void EventGeneration(int sender, int receiver, int message)
  70.         {
  71.             this.sender = sender;
  72.             this.receiver = receiver;
  73.             this.Message = message;
  74.  
  75.             if (this.Sender == this.Receiver)
  76.                 Console.WriteLine("\n!!!Абонент не может отправить сообщение самому себе!!!");
  77.  
  78.             else
  79.  
  80.                 switch (this.receiver)
  81.                 {
  82.                     case 0:
  83.                         Console.WriteLine("\nВ качестве получателя указан абонент 0. Завершение передачи сообщений между абонентами.");
  84.                         break;
  85.                     case 1:
  86.                         NewEventForFirst(this, e);
  87.                         break;
  88.                     case 2:
  89.                         NewEventForSecond(this, e);
  90.                         break;
  91.                     case 3:
  92.                         NewEventForThird(this, e);
  93.                         break;
  94.  
  95.                     default:
  96.                         Console.WriteLine("\n!!!Неверный номер абонента-получателя!!!");
  97.                         break;
  98.                 }
  99.         }
  100.  
  101.         class FirstReceiver
  102.         {
  103.             public void FirstEventHandler(object sender, EventArgs e)
  104.             {
  105.                 GenEvent a = sender as GenEvent;
  106.  
  107.                 if (a.Sender == 0)
  108.                     Console.WriteLine("\nАбонент 1 получил сообщение " + "\"" + a.Message + "\"" + " от почтового отделения");
  109.                 else
  110.                     Console.WriteLine("\nАбонент 1 получил сообщение " + "\"" + a.Message + "\"" + " от абонента " + a.Sender);
  111.             }
  112.  
  113.             public FirstReceiver(GenEvent gnEvent)
  114.             {
  115.                 gnEvent.NewEventForFirst += new GenEvent.NewEventHandler(FirstEventHandler);
  116.             }
  117.         }
  118.  
  119.         class SecondReceiver
  120.         {
  121.             public void SecondEventHandler(object sender, EventArgs e)
  122.             {
  123.                 GenEvent a = sender as GenEvent;
  124.  
  125.                 if (a.Sender == 0)
  126.                     Console.WriteLine("\nАбонент 2 получил сообщение " + "\"" + a.Message + "\"" + " от почтового отделения");
  127.                 else
  128.                     Console.WriteLine("\nАбонент 2 получил сообщение " + "\"" + a.Message + "\"" + " от абонента " + a.Sender);
  129.             }
  130.  
  131.             public SecondReceiver(GenEvent gnEvent)
  132.             {
  133.                 gnEvent.NewEventForSecond += new GenEvent.NewEventHandler(SecondEventHandler);
  134.             }
  135.         }
  136.  
  137.         class ThirdReceiver
  138.         {
  139.             public void ThirdEventHandler(object sender, EventArgs e)
  140.             {
  141.                 GenEvent a = sender as GenEvent;
  142.  
  143.                 if (a.Sender == 0)
  144.                     Console.WriteLine("\nАбонент 3 получил сообщение " + "\"" + a.Message + "\"" + " от почтового отделения");
  145.                 else
  146.                     Console.WriteLine("\nАбонент 3 получил сообщение " + "\"" + a.Message + "\"" + " от абонента " + a.Sender);
  147.             }
  148.  
  149.             public ThirdReceiver(GenEvent gnEvent)
  150.             {
  151.                 gnEvent.NewEventForThird += new GenEvent.NewEventHandler(ThirdEventHandler);
  152.             }
  153.         }
  154.  
  155.         class Program
  156.         {
  157.             static void Main(string[] args)
  158.             {
  159.                 int sender = 0; // первый отправитель
  160.                 int receiver = 1; // первый получатель
  161.                 int message;
  162.  
  163.                 GenEvent Generator = new GenEvent();
  164.  
  165.                 FirstReceiver First = new FirstReceiver(Generator);
  166.                 SecondReceiver Second = new SecondReceiver(Generator);
  167.                 ThirdReceiver Third = new ThirdReceiver(Generator);
  168.  
  169.                 Console.Write("Введите передаваемое сообщение: ");
  170.                 message = Convert.ToInt32(Console.ReadLine());
  171.  
  172.                 Generator.EventGeneration(sender, receiver, message);
  173.  
  174.                 while (receiver != 0) // цикл обмена сообщениями
  175.                 {
  176.                     if (receiver > 0 && receiver < 4)
  177.                         sender = receiver;
  178.  
  179.                     Console.Write("Введите номер следующего абонента-получателя: ");
  180.                     receiver = Convert.ToInt32(Console.ReadLine());
  181.                     Console.Write("Что передать: ");
  182.                     message = Convert.ToInt32(Console.ReadLine());
  183.  
  184.                     Generator.EventGeneration(sender, receiver, message);
  185.                 }
  186.  
  187.                 Console.ReadKey(true);
  188.             }
  189.         }
  190.     }
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement