// Получение сообщений из 1-го буфера,
        //      добавление к ним своей информации и добавление полученного сообщения во 2-ой буфер
        public void ConsumeProduceThread()
        {
            Random rnd = new Random();

            int    i = 1;
            string oldMessage, newMessage;

            while (true)
            {
                Thread.Sleep(rnd.Next(3000, 4000));

                TryingToGetMessageFromBuffer.Invoke("2-ой поток пытается забрать сообщение из 1-го буфера");
                oldMessage = _bufferToGetMessagesFrom.Pop();
                MessageGotFromBuffer.Invoke($"2-ой поток забрал сообщение \"{oldMessage}\" из 1-го буфера", true);

                Thread.Sleep(500);

                // Добавленная информация представляет из себя номер обрабатываемого данным потоком сообщения
                newMessage = oldMessage + $" - {i++}";

                AddedInfoToMessageAndTryingToAddItToBuffer.Invoke($"2-ой поток добавил к сообщению \"{oldMessage}\" свою информацию и пытается поместить получившееся сообщение \"{newMessage}\" во 2-ой буфер");

                _bufferToAddMessagesTo.Push(newMessage);
                MessageAddedToBuffer.Invoke($"2-ой поток поместил сообщение \"{newMessage}\" во 2-ой буфер", false);
            }
        }
示例#2
0
        // Генерация сообщений и добавление их в буфер
        private void ProduceMessages()
        {
            Random rnd = new Random();

            string message;
            int    i = 1;

            while (true)
            {
                Thread.Sleep(rnd.Next(1000, 2000));

                // Сообщения представляют из себя номер создаваемого сообщения
                message = i++.ToString();

                CreatedMessageAndTryingToAddItToBuffer.Invoke($"1-ый поток создал сообщение \"{message}\" и пытается поместить его в 1-ый буфер");

                _buffer.Push(message);
                MessageAddedToBuffer.Invoke($"1-ый поток поместил сообщение \"{message}\" в 1-ый буфер", true);
            }
        }