/// <summary>
 /// Creates a new query object
 /// </summary>
 /// <param name="workingSet">The working set for this query</param>
 /// <param name="lockTimeout">The read lock timeout to use for this query</param>
 /// <param name="factory">The task factory for this query</param>
 protected AbstractQuery(AbstractWorkingSet workingSet, int lockTimeout, TaskFactory factory)
 {
     this.WorkingSet  = workingSet;
     this.LockTimeout = lockTimeout;
     this.Factory     = factory;
 }
 /// <summary>
 /// Creates a new query object
 /// </summary>
 /// <param name="workingSet">The working set for this query</param>
 /// <param name="factory">The task factory for this query</param>
 protected AbstractQuery(AbstractWorkingSet workingSet, TaskFactory factory)
     : this(workingSet, Timeout.Infinite, factory)
 {
 }
 /// <summary>
 /// Creates a new query object
 /// </summary>
 /// <param name="workingSet">The working set for this query</param>
 /// <param name="lockTimeout">The timeout to use for this query</param>
 protected AbstractQuery(AbstractWorkingSet workingSet, int lockTimeout)
     : this(workingSet, lockTimeout, Task.Factory)
 {
 }
 /// <summary>
 /// Creates a new query object
 /// </summary>
 /// <param name="workingSet">The working set for this query</param>
 /// <param name="lockTimeout">The read lock timeout to use for this query</param>
 /// <param name="factory">The task factory for this query</param>
 internal AbstractQueryBase(AbstractWorkingSet workingSet, int lockTimeout, TaskFactory factory)
 {
     this.WorkingSet  = workingSet;
     this.LockTimeout = lockTimeout;
     this.Factory     = factory;
 }