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);
}
}
}