AppMetrics.AgentService.AgentServiceClass.EnsurePluginsStopped C# (CSharp) Method

EnsurePluginsStopped() private method

private EnsurePluginsStopped ( ) : void
return void
        private void EnsurePluginsStopped()
        {
            lock (_pluginsSync)
            {
                foreach (var pair in _plugins)
                {
                    SendPluginStopSignal(pair.Value);
                }
            }

            var startTime = DateTime.UtcNow;
            while ((DateTime.UtcNow - startTime) < WaitPluginPeriod)
            {
                lock (_pluginsSync)
                {
                    var stoppedPlugins = _plugins.Values.Where(plugin => !plugin.IsStarted).ToArray();
                    if (stoppedPlugins.Count() == _plugins.Count)
                        break;
                }
                Thread.Sleep(TimeSpan.FromSeconds(1));
            }

            lock (_pluginsSync)
            {
                foreach (var pair in _plugins)
                {
                    TerminatePlugin(pair.Value);
                }
            }
        }