// Получение сообщений из 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-го буфера, // добавление к ним своей информации и его передача как параметра события для логов private void ConsumeMessage() { Random rnd = new Random(); int i = 1; string oldMessage, newMessage; while (true) { Thread.Sleep(rnd.Next(5000, 6000)); TryingToGetMessageFromBuffer.Invoke("3-ий поток пытается забрать сообщение из 2-го буфера"); oldMessage = _buffer.Pop(); MessageGotFromBuffer.Invoke($"3-ий поток забрал сообщение \"{oldMessage}\" из 2-го буфера", false); // Добавленная информация представляет из себя номер обрабатываемого данным потоком сообщения Thread.Sleep(1000); newMessage = oldMessage + $" - {i++}"; AddedInfoToMessage.Invoke($"3-ий поток добавил к сообщению \"{oldMessage}\" свою информацию, итоговое сообщение: \"{newMessage}\"", newMessage); } }