public ObjectInstanceList GetSubFoldersItems(ObjectDefinition objdefinition, PagingInformation paginginfo, string folderserverrelativeurl, string connectionname)
        {
            Log.WriteVerbose(string.Format(BeginLogMessage, CLASS_NAME, "GetSubFoldersItems(ObjectDefinition objdefinition, PagingInformation paginginfo, string folderserverrelativeurl, string connectionname)"));
            ObjectInstanceList rtnval = null;
            rtnval = (ObjectInstanceList)HttpContext.Current.Cache[GetCacheKey(objdefinition.Id, connectionname) + "," + paginginfo.CurrentPage + "," + folderserverrelativeurl];

            if (rtnval == null)
            {
                lock (_cacheobject)
                {
                    ObjectInstanceCriteriaFilter criteriafilter = new ObjectInstanceCriteriaFilter(objdefinition);
                    criteriafilter.Condition = LogicalOperator.And;
                    criteriafilter.AddFilter("FSObjType", ObjectInstanceCriteriaFilterOperator.EqualTo, 0);
                    criteriafilter.AddFilter("FileDirRef", ObjectInstanceCriteriaFilterOperator.EqualTo, folderserverrelativeurl);
                    criteriafilter.Paging = paginginfo;
                    rtnval = ContextBusClient.GetObjectInstanceList(objdefinition, criteriafilter, AdapterName);
                    HttpContext.Current.Cache.Add(GetCacheKey(objdefinition.Id, connectionname) + "," + paginginfo.CurrentPage + "," + folderserverrelativeurl, rtnval, null, CacheExpirationDateTime, Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
                }
            }
            Log.WriteVerbose(string.Format(FinishLogMessage, CLASS_NAME, "GetSubFoldersItems(ObjectDefinition objdefinition, PagingInformation paginginfo, string folderserverrelativeurl, string connectionname)"));
            return rtnval;
        }
    private static void Start()
    {
        try
        {
            CurrentPage = 1;
            TotalPages = 1;
            ContextBusThreadCount = 5;
            ObjectInstanceList spItemList = null;
            ContextBusClient contextbusClient = new ContextBusClient();
            EventManagerClient eventClient = new EventManagerClient();
            contextbusClient.Login(ConnectionId, AdapterName);
            ObjectInstanceCriteriaFilter criteria = new ObjectInstanceCriteriaFilter(SharePointObjectDefinition);
            criteria.AddFilter("FSObjType", ObjectInstanceCriteriaFilterOperator.EqualTo, 0);
            criteria.AddFilter("FileDirRef", ObjectInstanceCriteriaFilterOperator.EqualTo, "EntireListWithPagination");
            criteria.Paging = new PagingInformation();
            criteria.Paging.CurrentPage = CurrentPage;
            criteria.Paging.RecordsPerPage = ContextBusThreadCount;

            while (CurrentPage <= TotalPages)
            {
                try
                {
                    spItemList = contextbusClient.GetObjectInstanceList(SharePointObjectDefinition, criteria, AdapterName);
                    TotalPages = spItemList.Paging.TotalPages;
                }
                catch (Exception exp)
                {
                    EkException.LogException(exp);
                }
                if (spItemList != null && spItemList.Results.Any())
                {
                    foreach (ObjectInstance spItem in spItemList.Results)
                    {
                        spItem.Fields.Where(p => p.Id.Equals("DxHSource")).FirstOrDefault().Value = "FromEktron";
                        EventInstance itemEvent = new EventInstance()
                        {
                            Id = WorkflowName,
                            Payload = spItem
                        };

                        eventClient.RaiseEvent(itemEvent);
                    }
                }
                CurrentPage++;
                criteria.Paging.CurrentPage = CurrentPage;
            }

            contextbusClient.Logout(AdapterName);

            //Forcing a garbage collection
            GC.Collect();
            GC.Collect();
            GC.Collect();
        }

        catch (ThreadAbortException tx)
        {
            //Threadaborts are ok...ASP.Net aborts thread when unloading application
            EkException.LogException(tx, System.Diagnostics.EventLogEntryType.Warning);
        }
        catch (Exception ex)
        {
            EkException.LogException(ex);
        }
        Thread.Sleep(1000);
    }
        public ObjectInstanceList GetListFolders(ObjectDefinition objdefinition, string connectionname)
        {
            Log.WriteVerbose(string.Format(BeginLogMessage, CLASS_NAME, "GetListFolders(ObjectDefinition objdefinition, string connectionname)"));
            ObjectInstanceList rtnval = null;
            rtnval = (ObjectInstanceList)HttpContext.Current.Cache[GetCacheKey(objdefinition.Id + "folderkey", connectionname)];

            if (rtnval == null)
            {
                lock (_cacheobject)
                {
                    ObjectInstanceCriteriaFilter criteriafilter = new ObjectInstanceCriteriaFilter(objdefinition);
                    criteriafilter.AddFilter("FSObjType", ObjectInstanceCriteriaFilterOperator.EqualTo, 1);
                    rtnval = ContextBusClient.GetObjectInstanceList(objdefinition, criteriafilter, AdapterName);
                    HttpContext.Current.Cache.Add(GetCacheKey(objdefinition.Id + "folderkey", connectionname), rtnval, null, CacheExpirationDateTime, Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
                }
            }
            Log.WriteVerbose(string.Format(FinishLogMessage, CLASS_NAME, "GetListFolders(ObjectDefinition objdefinition, string connectionname)"));
            return rtnval;
        }