public void MessageError(SendMessage errorMsg) { Control sync = this.ActiveControl; if (sync != null && sync.InvokeRequired) { sync.Invoke((Action)delegate { this.MessageError(errorMsg); }, null); return; } int begin = tbMessages.Text.Length; String messageStr = errorMsg.toSend.messageStr; String error = "Error sending message: " + messageStr + "\r\nEnding chat."; int errorLength = error.Length; tbMessages.Text += error; tbMessages.Select(begin, errorLength); tbMessages.SelectionColor = Color.Red; tbUserMessage.ReadOnly = true; this.userList.UserList.Remove(chatUser); // Handle memory messageStr = null; error = null; }
public void SendMsg(Message toSend) { String userTime; userTime = AddUserTime(myUsername, true); DisplayMsg(userTime, toSend.messageStr, myUsername); SendMessage sending = new SendMessage(toSend, chatUser, myUsername, this); chatUser.touchAwaitingMACK(true, ref sending, 0); // Handle memory userTime = null; }
public bool touchAwaitingMACK(bool write, ref SendMessage message, int id) { lock (this) { if (write) { awaitingMACK.Add(message); return false; } else { foreach (SendMessage waiting in awaitingMACK) { if (waiting.iSequenceID == id) { waiting.MsgRcvd(); awaitingMACK.Remove(waiting); return true; } } return false; } } }