public void SendServiceState(ServiceDescriptionDto service)
        {
            try
            {
                var srv = Services.FirstOrDefault(s => s.ServiceType == service.ServiceType);

                if (srv != null)
                {
                    if (service.IsStarted == false && _tokens.ContainsKey(srv))
                    {
                        _tokens[srv].Cancel();
                        _tokens.Remove(srv);
                    }
                    else if (service.IsStarted == true)
                    {
                        StartNewTimer(service);
                    }

                    Services.ReplaceItem(oldItem: srv, newItem: service);
                }
            }
            catch (Exception ex)
            {
                MessageService.ShowError(ex.Message);
            }
        }
 private void StopService(ServiceDescriptionDto service)
 {
     if (service != null)
     {
         try
         {
             _proxy.ProxyService.StopService(service);
         }
         catch (Exception ex)
         {
             MessageService.ShowError(ex.Message);
         }
     }
 }
        private void StartNewTimer(ServiceDescriptionDto service)
        {
            CancellationTokenSource cancellationToken = new CancellationTokenSource();

            _tokens.Add(service, cancellationToken);

            service.WorkingHours = DateTime.Now.Subtract(service.StartDate);

            Task.Factory.StartNew(() =>
            {
                while (cancellationToken.Token.IsCancellationRequested == false)
                {
                    service.WorkingHours += new TimeSpan(0, 0, 1);
                    Task.Delay(1000).Wait();
                }
            }, cancellationToken.Token);
        }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            ServiceDescriptionDto serviceDto = value as ServiceDescriptionDto;

            if (serviceDto != null)
            {
                if (serviceDto.IsStarted)
                {
                    return("Время запуска");
                }
                else
                {
                    return("Время закрытия | Время работы");
                }
            }

            return(null);
        }
Exemple #5
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            ServiceDescriptionDto service = value as ServiceDescriptionDto;

            if (service != null)
            {
                if (service.IsStarted)
                {
                    return(String.Format("{0}", service.StartDate.ToString()));
                }
                else
                {
                    return(String.Format("{0} | {1}", service.StopDate.ToString(),
                                         service.StopDate.ToLocalTime() - service.StartDate.ToLocalTime()));
                }
            }

            return(null);
        }
Exemple #6
0
        void ICommunicationContract.StartService(ServiceDescriptionDto service)
        {
            if (service != null)
            {
                try
                {
                    ServiceHost           newHost            = null;
                    ServiceDescriptionDto serviceDescription = null;
                    ServiceDescriptionDto oldDescription     = null;

                    for (int i = 0; i < _services.Values.Count; i++)
                    {
                        if (_services.Values.ElementAt(i).Description.Endpoints[0].Contract.Name == service.ServiceType &&
                            _services.Values.ElementAt(i).State == CommunicationState.Closed)
                        {
                            newHost = new ServiceHost(_serviceImplementations[service.ServiceType]);
                            newHost.Open();

                            newHost.Opened  += HostStateHandler;
                            newHost.Closed  += HostStateHandler;
                            newHost.Faulted += HostStateHandler;

                            serviceDescription = CreateDescription(newHost);
                            oldDescription     = _services.Keys.ElementAt(i);

                            break;
                        }
                    }

                    _services.Remove(oldDescription);
                    _services.Add(serviceDescription, newHost);

                    Callback.SendServiceState(serviceDescription);

                    HostStart?.Invoke(serviceDescription.ServiceType, newHost);
                }
                catch (Exception ex)
                {
                }
            }
        }
Exemple #7
0
        void ICommunicationContract.StopService(ServiceDescriptionDto service)
        {
            if (service != null)
            {
                try
                {
                    ServiceHost closedHost = null;
                    foreach (var host in _services.Values)
                    {
                        if (host.Description.Endpoints[0].Contract.Name == service.ServiceType &&
                            host.State == CommunicationState.Opened)
                        {
                            closedHost = host;
                            host.Close();

                            service.StopDate  = DateTime.Now;
                            service.IsStarted = false;
                            service.State     = host.State.ToString();

                            Callback.SendServiceState(service);

                            break;
                        }
                    }

                    closedHost.Opened  -= HostStateHandler;
                    closedHost.Closed  -= HostStateHandler;
                    closedHost.Faulted -= HostStateHandler;

                    HostStop?.Invoke(closedHost, service.StartDate);
                }
                catch (Exception ex)
                {
                }
            }
        }