private void ExecutePlugins(IJob job, Action<IPlugin> pluginAction) { foreach( IPlugin plugin in job.GetRunablePlugins() ) { lock (plugin) { if(plugin.IsRunning || !plugin.IsReadyForOperation) continue; if (Broker.HasAvailableSlots(plugin /*, job.CurrentCommand == JobCommands.Commit*/)) pluginAction(plugin); } } }