public IDocument SearchForDocument(IDocumentSearchCondition condition)
        {
            // Get an item for searching document, by the given condition.
            var item = new SearchDocumentWorkItem(solution, condition);
            queue.Add(item);

            // Waiting to the finishing of the workitem.
            while (item.State != WorkItemState.Completed && item.State != WorkItemState.Failing) ;

            // Return the result.
            return item.GetSearchedDocument();
        }
 internal SearchDocumentWorkItem(ISolution solution, IDocumentSearchCondition condition)
 {
     this.solution = solution;
     this.condition = condition;
 }