public static void Open(IProcessManagerEventProvider processManagerEventProvider) { if (_serviceHost == null || _serviceHost.State == CommunicationState.Closed || _serviceHost.State == CommunicationState.Faulted) { _processManagerService = new ProcessManagerService(); _processManagerEventProvider = processManagerEventProvider; _processManagerEventProvider.ProcessStatusesChanged += _processManagerService.ProcessManagerEventProvider_ProcessStatusesChanged; _processManagerEventProvider.ConfigurationChanged += _processManagerService.ProcessManagerEventProvider_ConfigurationChanged; _processManagerEventProvider.DistributionCompleted += _processManagerService.ProcessManagerEventProvider_DistributionCompleted; NetTcpBinding binding = new NetTcpBinding() { MaxBufferSize = Constants.MAX_MESSAGE_SIZE, MaxBufferPoolSize = Constants.MAX_MESSAGE_SIZE * 2, MaxReceivedMessageSize = Constants.MAX_MESSAGE_SIZE, ReaderQuotas = { MaxArrayLength = Constants.MAX_MESSAGE_SIZE }, Security = { Mode = SecurityMode.None } }; _serviceHost = new ServiceHost(_processManagerService, new Uri("net.tcp://" + Environment.MachineName + "/ProcessManagerService")); _serviceHost.AddServiceEndpoint(typeof(IProcessManagerService), binding, string.Empty); _serviceHost.Open(); } }
public static void Close() { if (_serviceHost != null) { _serviceHost.Close(); _serviceHost = null; _processManagerEventProvider.ProcessStatusesChanged -= _processManagerService.ProcessManagerEventProvider_ProcessStatusesChanged; _processManagerEventProvider.ConfigurationChanged -= _processManagerService.ProcessManagerEventProvider_ConfigurationChanged; _processManagerEventProvider.DistributionCompleted -= _processManagerService.ProcessManagerEventProvider_DistributionCompleted; _processManagerService = null; } }