private static void MessageReceiver(object sender, MessageReceivedEventArgs e) { if (e.QueueName != IncomingQueueName) { return; } if (!ControllerTaskResultMessage.IsJsonValidMessage(e.Message)) { return; } var message = ControllerTaskResultMessage.FromJson(e.Message); if (!Tasks.ContainsKey(message.taskid)) { return; } if (!TaskResultMessages.Contains(message.result)) { return; } //throw new FormatException($"Message is of bad format. Contains invalid result message. Message: {e.Message}"); Action <ControllerTaskResultMessage> action = TaskCompleteActions[message.taskid]; TaskCompleteActions.Remove(message.taskid); Tasks.Remove(message.taskid); action(message); }
private static void RunTask(ControllerTaskRequestMessage message, Action <ControllerTaskResultMessage> actionToCallAfterComplete) { Tasks.Add(message.taskid, message); TaskCompleteActions.Add(message.taskid, actionToCallAfterComplete); Communicator.Send(OutgoingQueueName, message.ToJson()); }