Отложенная обработка событий - C#

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

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

Здравствуйте, предположим, у нас есть

Логика

и

Отображение

. Отображение подписано на событие

НовыйОбъект

, рассылаемое

Логикой

и когда оно происходит

Отображение

рендерит новый объект. Это означает, что метод

Отображения

, рендерящий

НовыйОбъект

, будет вызван непосредственно при выполнении кода

Логики

. Мне это не нравится по религиозным причинам, хотелось бы, что бы код

Отображения

выполнялся только когда придет его черед, а не во время

выполнения

Логики

. Пока решил создать List и добавлять туда

НовыеОбъекты

во время выполнения Логики, а после перебирать его в цикле и рендерить

НовыеОбъекты

. Между итерациями List очищается. Я не уверен на сколько это медленнее чем события, но то что менее удобно - это точно. Есть ли другие способы?

Решение задачи: «Отложенная обработка событий»

textual
Листинг программы
  1. class Logic
  2. {
  3.     public event BombExplosion;
  4.     public List<Bomb> Bombs = new List<Bomb>();
  5.     public BombBoom(Bomb b)
  6.     {
  7.          //тут происходит обработка логики взрыва и помечаем все бомбы, которые взорвались
  8.         // статусом "Взрывается"
  9.        foreach(Bomb b in this){
  10.          if(...) b.status = BompStatus.Detoneted; }
  11. //только после обработки вызываем метод/событие
  12.         if(BombExplosion!=null) BombExplosion(this.Where(w=>w.status == BompStatus.Detoneted).ToList());
  13.     }
  14. }
  15. public  enum BompStatus{
  16.    Visible, Unvisible, Detoneted, Destroyed
  17. }
  18. class Bomb {
  19.  public  BompStatus status
  20. }
  21. class Render
  22. {
  23.     public void RenderBombExplosion(Bombs bomb)
  24.     {
  25.         // и тут рендерим все сдетонировавшие бомбы
  26.     }
  27. }

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


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

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

12   голосов , оценка 4 из 5

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

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

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