private async void DisplaySearchPreviewResult(string searchStr)
        {
            int     maxResultCount = 10000;
            JobArgs args           = new JobArgs();

            args.EarliestTime = this.searchEarliestTime;
            args.LatestTime   = this.searchLatestTime;
            args.SearchMode   = SearchMode.RealTime;
            Job realtimeJob = await MainPage.SplunkService.Jobs.CreateAsync(searchStr, count : maxResultCount, args : args);

            Stopwatch watch = new Stopwatch();

            watch.Start();

            this.allResults.Clear();
            int resultCount = 0;

            do
            {
                using (SearchResultStream resultStream = await realtimeJob.GetSearchPreviewAsync())
                {
                    resultCount = resultStream.Count();
                }
            } while (resultCount == 0 && watch.Elapsed.TotalSeconds <= 10 && !this.cancelSearchTokenSource.Token.IsCancellationRequested);

            bool             showFirstPage = false;
            SearchResultArgs searchArgs    = new SearchResultArgs();

            searchArgs.Count = maxResultCount;
            using (SearchResultStream resultStream = await realtimeJob.GetSearchPreviewAsync(searchArgs))
            {
                titleGrid.Visibility = Visibility.Visible;
                Task task = this.GetResultTask(resultStream);

                //start a task to get all results
                do
                {
                    if (this.allResults.Count > 0)
                    {
                        if (!showFirstPage && this.ShowResultPage(this.allResults, 0, this.itemsPerPage))
                        {
                            showFirstPage = true;
                        }

                        if (this.currentShownPageIndex < 0)
                        {
                            ShowPagingLink(0);
                        }
                    }

                    await Task.Delay(1000);
                } while (!(task.Status == TaskStatus.RanToCompletion || task.Status == TaskStatus.Faulted || task.Status == TaskStatus.Canceled));


                if (!showFirstPage)
                {
                    this.ShowResultPage(this.allResults, 0, this.itemsPerPage);
                }
                if (this.currentShownPageIndex < 0)
                {
                    ShowPagingLink(0);
                }

                this.PageContentReset();
                await realtimeJob.CancelAsync();
            }
        }