private async Task EnsureValidCommonServicesWcfConnection()
 {
     await
     WcfCommunicationHelper.StartWcfClient <CommonServicesClient, CommonServicesFault, ICommonServices>(this, _commonServicesClient, c => new CommonServicesClient(new InstanceContext(this)),
                                                                                                        async c =>
     {
         _commonServicesClient = c;
         try
         {
             if (_keepAliveCommonServices != null)
             {
                 _keepAliveCommonServices.Dispose();
             }
             if (!await c.get_IsAliveAndInitializedAsync())
             {
                 IsEnabled = false;
                 return;
             }
             await c.SubscribeEventsAsync();
             await c.SubscribeModuleStateEventsAsync();
             var result = await _commonServicesClient.RequestStatesAsync();
             UpdateModuleStates(result);
             _keepAliveCommonServices = WcfCommunicationHelper.KeepAlive <CommonServicesFault>(c.get_IsAliveAndInitializedAsync, _logger);
             IsEnabled = true;
         }
         catch (Exception ex)
         {
             _logger.Error("Error connecting to common services.", ex);
             IsEnabled = false;
         }
     });
 }
 private async Task EnsureValidConfigurationServiceWcfConnection()
 {
     await
     WcfCommunicationHelper.StartWcfClient <ConfigurationServiceClient, ConfigurationFault, ConfigurationService.IConfigurationService>(this, _configurationServiceClient,
                                                                                                                                        c => new ConfigurationServiceClient(), async c =>
     {
         _configurationServiceClient = c;
         try
         {
             if (_keepAliveConfigurationService != null)
             {
                 _keepAliveConfigurationService.Dispose();
             }
             if (!await c.get_IsInitializedAsync())
             {
                 IsEnabled = false;
                 return;
             }
             _keepAliveConfigurationService = WcfCommunicationHelper.KeepAlive <ConfigurationFault>(c.KeepAliveAsync, _logger);
             IsEnabled = true;
         }
         catch (Exception ex)
         {
             _logger.Error("Error connecting to configuration service.", ex);
             IsEnabled = false;
         }
     });
 }