Использование первого аргумента обработчика события - C#

Узнай цену своей работы

Формулировка задачи:

Есть решение пункта 7, но не понимаю, как сделать 8, помогите. 7. Создать приложение, в котором генератор события может генерировать три разных события. Приемники событий выступают в качестве абонентов почтового отделения и могут пересылать друг другу информацию, используя генератор в качестве почтового ящика. При этом они указывают номер (от 1 до 3) следующего приемника и некоторое целое число, которое передается получателю. Такой цикл передачи продолжается до тех пор, пока какой либо из приемников в качестве получателя не укажет номер ноль. В этом случае приложение завершает свою работу. При запуске приложения первое почтовое извещение всегда получает от генератора первый приемник. Для адресации и передачи информации использовать второй аргумент обработчика события. 8. Выполнить задание по пункту 7, но адресации и передачи информации использовать первый аргумент обработчика события.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleAppTesting
  8. {
  9. public delegate void PostSendedSender(int post, int abonent);
  10. // Генератор
  11. public class PostOffice
  12. {
  13. public event PostSendedSender PostSendedTo1;
  14. public event PostSendedSender PostSendedTo2;
  15. public event PostSendedSender PostSendedTo3;
  16. public void SendMessage(int abonent, int post)
  17. {
  18. switch (abonent)
  19. {
  20. case 1:
  21. if (PostSendedTo1 != null)
  22. {
  23. PostSendedTo1(post, 1);
  24. //Console.WriteLine("Событие PostSendedTo1 произошло!");
  25. }
  26. break;
  27. case 2:
  28. if (PostSendedTo2 != null)
  29. {
  30. PostSendedTo2(post, 2);
  31. //Console.WriteLine("Событие PostSendedTo2 произошло!");
  32. }
  33. break;
  34. case 3:
  35. if (PostSendedTo3 != null)
  36. {
  37. PostSendedTo3(post, 3);
  38. //Console.WriteLine("Событие PostSendedTo3 произошло!");
  39. }
  40. break;
  41. default:
  42. break;
  43. }
  44. // обнуляем подписку на все методы после посылки очередного сообщения
  45. // иначе с каждой последующей посылкой мы будет посылать +1 сообщений
  46. PostSendedTo1 = null;
  47. PostSendedTo2 = null;
  48. PostSendedTo3 = null;
  49. }
  50. }
  51. public class Abonents
  52. {
  53. static void AppendInvokations(PostOffice office)
  54. {
  55. PostSendedSender lambdaForPosting = new PostSendedSender(
  56. (postData, abonent) =>
  57. {
  58. if (postData == 0)
  59. {
  60. Console.WriteLine("Послано 0 Завершаем работу...");
  61. Environment.Exit(0);
  62. }
  63. else
  64. Console.WriteLine("Сообщение "{0}" послано абоненту {1}", postData, abonent);
  65. }
  66. );
  67. office.PostSendedTo1 += lambdaForPosting;
  68. office.PostSendedTo2 += lambdaForPosting;
  69. office.PostSendedTo3 += lambdaForPosting;
  70. }
  71. public static void Abonent1SendPost(PostOffice office, int to, int post)
  72. {
  73. AppendInvokations(office);
  74. office.SendMessage(to, post);
  75. Console.WriteLine("Послано абонентом 1\n-------------");
  76. }
  77. public static void Abonent2SendPost(PostOffice office, int to, int post)
  78. {
  79. AppendInvokations(office);
  80. office.SendMessage(to, post);
  81. Console.WriteLine("Послано абонентом 2\n-------------");
  82. }
  83. public static void Abonent3SendPost(PostOffice office, int to, int post)
  84. {
  85. AppendInvokations(office);
  86. office.SendMessage(to, post);
  87. Console.WriteLine("Послано абонентом 3\n-------------");
  88. }
  89. }
  90. public class Program
  91. {
  92. public static void Main(string[] args)
  93. {
  94. PostOffice mainOffice = new PostOffice();
  95. Abonents.Abonent1SendPost(mainOffice, 3, 100);
  96. Abonents.Abonent3SendPost(mainOffice, 1, 280);
  97. Abonents.Abonent2SendPost(mainOffice, 1, 0);
  98. }
  99. }
  100. }

Решение задачи: «Использование первого аргумента обработчика события»

textual
Листинг программы
  1. public event EventHandler<int> Ok1;
  2. public event EventHandler<int> Ok2;
  3. public event EventHandler<int> Ok3;
  4.  
  5.  
  6. ....
  7. /// теперь у нас есть параметр который можно передавать в событии
  8. int param = 1;
  9. if (Ok1 != null) { Ok1(this, param); }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы