/// <summary>
        /// Initializes a new instance of the <see cref="BackgroundJobClient"/> class
        /// with a specified job storage and job creation process.
        /// </summary>
        /// 
        /// <exception cref="ArgumentNullException"><paramref name="storage"/> argument is null.</exception>
        /// <exception cref="ArgumentNullException"><paramref name="process"/> argument is null.</exception>
        public BackgroundJobClient(JobStorage storage, IJobCreationProcess process)
        {
            if (storage == null) throw new ArgumentNullException("storage");
            if (process == null) throw new ArgumentNullException("process");

            _connection = storage.GetConnection();
            _process = process;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="BackgroundJobClient"/> class
 /// with a specified job storage and job creation process.
 /// </summary>
 /// 
 /// <exception cref="ArgumentNullException"><paramref name="storage"/> argument is null.</exception>
 /// <exception cref="ArgumentNullException"><paramref name="process"/> argument is null.</exception>
 public BackgroundJobClient(
     JobStorage storage, 
     IStateMachineFactory stateMachineFactory, 
     IJobCreationProcess process)
 {
     if (storage == null) throw new ArgumentNullException("storage");
     if (stateMachineFactory == null) throw new ArgumentNullException("stateMachineFactory");
     if (process == null) throw new ArgumentNullException("process");
     
     _storage = storage;
     _stateMachineFactory = stateMachineFactory;
     _process = process;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="BackgroundJobClient"/> class
        /// with a specified job storage and job creation process.
        /// </summary>
        ///
        /// <exception cref="ArgumentNullException"><paramref name="storage"/> argument is null.</exception>
        /// <exception cref="ArgumentNullException"><paramref name="process"/> argument is null.</exception>
        public BackgroundJobClient(
            JobStorage storage,
            IStateMachineFactory stateMachineFactory,
            IJobCreationProcess process)
        {
            if (storage == null)
            {
                throw new ArgumentNullException("storage");
            }
            if (stateMachineFactory == null)
            {
                throw new ArgumentNullException("stateMachineFactory");
            }
            if (process == null)
            {
                throw new ArgumentNullException("process");
            }

            _storage             = storage;
            _stateMachineFactory = stateMachineFactory;
            _process             = process;
        }