Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2010, 18:19   #1
pa6kevi4
Пользователь
 
Регистрация: 15.09.2009
Сообщений: 52
Радость Делегат, интерфейс, событие.

Спасибо, можно закрывать!

Последний раз редактировалось pa6kevi4; 25.05.2010 в 20:22.
pa6kevi4 вне форума Ответить с цитированием
Старый 25.05.2010, 19:26   #2
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

как-то так
Код:
    class Program
    {        
        static void Main(string[] args)
        {
            MessageGenerator gen = new MessageGenerator(15);

            BufferedPrinter bufPrint = new BufferedPrinter();
            SimplePrinter simpPrint = new SimplePrinter();

            gen.MessageGeneratedEvent += new MessageGenerator.MyDelegat(bufPrint.ProcessString);
            gen.MessageGeneratedEvent += new MessageGenerator.MyDelegat(simpPrint.ProcessString);

            gen.Generate();

            Console.ReadLine();
        }
    }

    class MessageGenerator
    {
        public delegate void MyDelegat(string str);
        public event MyDelegat MessageGeneratedEvent;

        int count;
        public MessageGenerator(int count)
        {
            this.count = count;
        }

        public void Generate()
        {
            string str = "";
            for (int i = 1; i <= count; ++i)
            {
                str = i.ToString();
                MessageGeneratedEvent(str);
            }
        }
    }

    class SimplePrinter : IMessageReceiver
    {
        public void ProcessString(string msg)
        {
            Console.WriteLine("SimplePrinter " + msg);
        }
    }
    class BufferedPrinter : IMessageReceiver
    {
        Queue<String> queue = new Queue<string>();

        public void ProcessString(string msg)
        {
            if (queue.Count < 10)
                queue.Enqueue(msg);
            else
            {
                while (queue.Count > 0)
                    Console.WriteLine("BufferedPrinter " + queue.Dequeue() + "\t благодарности принимаются на кошелек R393206990556");
            }
        }
    }

    interface IMessageReceiver
    {
        void ProcessString(string msg);
    }
m0nax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интерфейс masterlomaster Помощь студентам 3 22.10.2009 11:42
COM-интерфейс Rekky Общие вопросы Delphi 2 16.09.2009 06:05
Интерфейс [Smarik] Общие вопросы Delphi 16 18.06.2008 10:37
Интерфейс!!! Oleg Romanchuk Свободное общение 8 25.10.2007 18:13