/// <summary> /// This thread will attempt to retrieve messages from a channel queue to route it to the /// correct place on the UI where it should be posted. /// </summary> private void messageParser() { while (consoleOpen) { MessageInfo retrievedMessage = irc.parseMessage(); if (retrievedMessage != null) { if (retrievedMessage.header == IRCMessageType.OTHER) { retrievedMessage.channel = chatTab; MessagestoPost.Enqueue(retrievedMessage); } else if (retrievedMessage.header == IRCMessageType.PRIVMSG) { if (botChannels.ContainsKey(retrievedMessage.channel)) { User recordUser = channelArray[retrievedMessage.channel].returnUser(retrievedMessage.theUser.name); if (recordUser != null) { User.lazyUpdate(recordUser, retrievedMessage.theUser, out recordUser); retrievedMessage.theUser = recordUser; } irc.chatMessageQ.Enqueue(retrievedMessage); } else { MessagestoPost.Enqueue(retrievedMessage); } MessageInfo copyMI = new MessageInfo(retrievedMessage.theUser.name, retrievedMessage.channel, ""); copyMI.header = IRCMessageType.JOIN; UsersToUpdate.Enqueue(copyMI); updateUserView(); } else if (retrievedMessage.header == IRCMessageType.PART || retrievedMessage.header == IRCMessageType.JOIN) { UsersToUpdate.Enqueue(retrievedMessage); updateUserView(); } else if (retrievedMessage.header == IRCMessageType.OP || retrievedMessage.header == IRCMessageType.DEOP) { UsersToUpdate.Enqueue(retrievedMessage); updateUserView(); } } Thread.Sleep(1); } }