static void CancelAndWait(CancellationTokenSource source, IMessageQueueFactory messageFactory, params Task[] tasks) { source.Cancel(); Task.WaitAll(tasks); InfrastructureFactory.ForceLogFlush(); InfrastructureFactory.CloseLogTargets(); if (messageFactory != null) { if (messageFactory.IsOpen) { messageFactory.Dispose(); } } }
protected override void OnStop() { logger.Info("Miramar Controller is stopping."); serviceSource.Cancel(); Task.WaitAll(serviceTask, messageTask); InfrastructureFactory.ForceLogFlush(); if (queuePublisher != null) { queuePublisher.Dispose(); } if (queueFactory != null && queueFactory.IsActive) { if (queueFactory.IsOpen) { queueFactory.Dispose(); } } }