private void OnPageRetrieved(ITaskMonitor task, PageResult <TResult> result)
        {
            Contract.Requires(() => task != null);

            InternalLogger.Info("On page retrieved callback");

            if (_isDisposed)
            {
                return;
            }

            lock (_syncRoot)
            {
                LastResult = result;

                InternalLogger.Info($"{result.Items.Count} items retrieved, total remote items is {result.TotalCount}");
                if (_refreshRequested)
                {
                    Reset();
                }

                TotalRemoteCount = result.TotalCount;
                TotalCount       = Math.Min(result.TotalCount, _maxItemCount);
                PageLoadedCount++;
            }

            _items.AddRange(result.Items);
            InternalLogger.Info($"{Items.Count} items in paginator collection, {PageLoadedCount} pages loaded");

            Contract.Ensures(() => PageLoadedCount > 0);
            Contract.Ensures(() => result.Items != null && _maxItemCount >= 0);
        }
        private void OnTaskCompleted(ITaskMonitor task)
        {
            InternalLogger.Info($"OnTaskCompleted( taskStatus: {task.Status} )");
            if (_isDisposed)
            {
                return;
            }

            _onTaskCompleted?.Invoke(task);
        }
        public static string StatisticsTracerFormatter(ITaskMonitor taskMonitor, TimeSpan taskExecutionTime)
        {
            var statisticsBuilder = new StringBuilder($"TaskMonitor|STATS|{Thread.CurrentThread.ManagedThreadId:000}|");

            statisticsBuilder.Append(taskMonitor);
            statisticsBuilder.Append(", Executed in ");
            statisticsBuilder.Append(taskExecutionTime.TotalMilliseconds);
            statisticsBuilder.Append(" ms");
            return(statisticsBuilder.ToString());
        }
예제 #4
0
 public TaskQueue(Task initialTask, ITaskMonitor taskMonitor)
     : this(initialTask)
 {
     _taskMonitor = taskMonitor;
 }
예제 #5
0
 public TaskQueue(Task initialTask, ITaskMonitor taskMonitor)
     : this(initialTask)
 {
     _taskMonitor = taskMonitor;
 }
 public static void DefaultStatisticsTracer(ITaskMonitor taskMonitor, TimeSpan taskExecutionTime)
 {
     Trace.WriteLine(StatisticsTracerFormatter(taskMonitor, taskExecutionTime));
 }
 public static string ExceptionTracerFormatter(ITaskMonitor taskMonitor, string message, Exception exception)
 => $"TaskMonitor|ERROR|{Thread.CurrentThread.ManagedThreadId:000}|{message}{Environment.NewLine}Exception:{exception}";
 public static void DefaultExceptionTracer(ITaskMonitor taskMonitor, string message, Exception exception)
 {
     Trace.WriteLine(ExceptionTracerFormatter(taskMonitor, message, exception));
 }