Example #1
0
        private bool TryToProceedCommand(ICommand command, IEnumerable<string> args)
        {
            if (command != null)
            {
                AbstractTraceConsole traceConsole = null;
                try
                {
                    command.InjectProperties(args);
                    traceConsole = new TraceConsole(Console, command);

                    if (!command.AllowParallel && !_lockingService.AcquireLock(command.Name))
                        return false;

                    command.Console = traceConsole;
                    command.Run();
                    return true;
                }
                catch (Exception exception)
                {
                    LogException(traceConsole, exception, command);
                    return false;
                }
                finally
                {
                    if (!command.AllowParallel)
                        _lockingService.ReleaseLock(command.Name);

                    var disposable = traceConsole as IDisposable;
                    if (disposable != null)
                        disposable.Dispose();
                }

            }
            return false;
        }