/// <summary> /// Stops processing incoming messages /// </summary> /// <param name="waitToStop">True, to wait until stopped</param> public virtual void Stop(bool waitToStop) { _running = false; //Stop processing new incoming messages _incomingMessageQueue.Stop(waitToStop); //Stop communicator objects StopCommunicators(); //Pulses WaitUntilReceiverCommunicatorConnected (waiting for a communicator) //and MessageDeliverer.SendDataMessage (waiting for available receiver) methods. //They must no wait anymore, since NGRID is shutting down. lock (_communicators) { Monitor.PulseAll(_communicators); } //Stop message deliverer _messageDeliverer.Stop(waitToStop); }
/// <summary> /// Starts outgoing message queue. /// </summary> /// <param name="waitToStop">True, to block caller thread until this object stops</param> protected override void StopCommunicaiton(bool waitToStop) { _outgoingMessageQueue.Stop(waitToStop); }