private Task <HttpResponseMessage>[] SendStateChangedEvent(AppInfoEx appInfo)
        {
            var tasks     = new List <Task <HttpResponseMessage> >();
            var appsState = new Contracts.AppStateInfo()
            {
                Hash = appInfo.Hash, Time = appInfo.Time
            };
            var stateEvent = new Contracts.StateChangedEvent();

            stateEvent.ServiceName = _serviceConfig.GetServiceName();
            stateEvent.AppState    = appsState;
            var services = _servicesCollector.GetServices();

            for (var i = 0; i < services.Count; ++i)
            {
                if ((services[i].Name.IndexOf(_serviceConfig.GetServiceName()) == -1) && services[i].Active)
                {
                    string      jsonString = JsonConvert.SerializeObject(stateEvent);
                    HttpContent content    = new StringContent(jsonString);
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    try
                    {
                        tasks.Add(_httpClient.PostAsync(services[i].Url, content));
                    }
                    catch (Exception)
                    {
                        services[i].Active = false;
                    }
                }
            }
            return(tasks.ToArray());
        }
        private static async Task <string[]> InitStartupState()
        {
            var tasks    = new List <Task <string> >();
            var services = _servicesCollector.GetServices();

            for (var i = 0; i < services.Count; ++i)
            {
                if ((services[i].Name.IndexOf(_serviceConfig.GetServiceName()) == -1) && services[i].Active)
                {
                    var initServiceStateTask = GetInitServiceState(services[i]);
                    tasks.Add(initServiceStateTask);
                    var serviceState = await initServiceStateTask;
                    if (serviceState != null)
                    {
                        var appsState = JsonConvert.DeserializeObject <AppsHash>(serviceState);
                        ProcessAppsSate(appsState, services[i]);
                    }
                }
            }
            return(await Task.WhenAll(tasks.ToArray()));
        }