private void setUpBackgroundWorker()
        {
            Action <List <FileListViewItemViewModel> > updateSubEntries = (result) =>
            {
                List <FileListViewItemViewModel> delList = new List <FileListViewItemViewModel>(SubEntriesInternal.ToArray());
                List <FileListViewItemViewModel> addList = new List <FileListViewItemViewModel>();

                foreach (FileListViewItemViewModel model in result)
                {
                    if (delList.Contains(model))
                    {
                        delList.Remove(model);
                    }
                    else
                    {
                        addList.Add(model);
                    }
                }

                foreach (FileListViewItemViewModel model in delList)
                {
                    SubEntriesInternal.Remove(model);
                }

                foreach (FileListViewItemViewModel model in addList)
                {
                    SubEntriesInternal.Add(model);
                }

                DirectoryCount = (uint)(from model in SubEntriesInternal where model.EmbeddedModel is DirectoryModel select model).Count();
                FileCount      = (uint)(SubEntriesInternal.Count - DirectoryCount);

                HasSubEntries = SubEntriesInternal.Count > 0;
            };


            bgWorker_LoadSubEntries = new BackgroundTaskManager <List <FileListViewItemViewModel> >(
                () =>
            {
                IsLoading = true;
                return(getEntries());
            },
                (result) =>
            {
                updateSubEntries(result);
                IsLoading = false;
            });

            bgWorker_FilterSubEntries = new BackgroundTaskManager <List <FileListViewItemViewModel> >(
                () =>
            {
                IsLoading = true;
                return(filterEntries());
            },
                (result) =>
            {
                updateSubEntries(result);
                IsLoading = false;
            });
        }
        protected override void FetchData(bool refresh)
        {
            base.FetchData(refresh);

            if (bgWorker_LoadSubEntries == null)
            {
                setUpBackgroundWorker();
            }

            if (!IsLoaded)
            {
                refresh = true; //Not loaded before, force refresh.
                SubEntriesInternal.Clear();
            }

            if (refresh)
            {
                Refresh();
            }
        }