Beispiel #1
0
        public Task CreateTaskAsync(ContentItem contentItem, IndexingTaskTypes type)
        {
            if (contentItem == null)
            {
                throw new ArgumentNullException("contentItem");
            }

            if (contentItem.Id == 0)
            {
                // Ignore that case, when Update is called on a content item which has not be "created" yet

                return(Task.CompletedTask);
            }

            var indexingTask = new IndexingTask
            {
                CreatedUtc    = _clock.UtcNow,
                ContentItemId = contentItem.ContentItemId,
                Type          = type
            };

            lock (_tasksQueue)
            {
                if (_tasksQueue.Count == 0)
                {
                    ShellScope.AddDeferredTask(scope => FlushAsync(scope, _tasksQueue));
                }

                _tasksQueue.Add(indexingTask);
            }

            return(Task.CompletedTask);
        }
        public Task CreateTaskAsync(ContentItem contentItem, IndexingTaskTypes type)
        {
            if (contentItem == null)
            {
                throw new ArgumentNullException("contentItem");
            }

            if (contentItem.Id == 0)
            {
                // Ignore that case, when Update is called on a content item which has not be "created" yet

                return(Task.CompletedTask);
            }

            var indexingTask = new IndexingTask
            {
                CreatedUtc    = _clock.UtcNow,
                ContentItemId = contentItem.ContentItemId,
                Type          = type
            };

            if (_tasksQueue.Count == 0)
            {
                var tasksQueue = _tasksQueue;

                // Using a local var prevents the lambda from holding a ref on this scoped service.
                ShellScope.AddDeferredTask(scope => FlushAsync(scope, tasksQueue));
            }

            _tasksQueue.Add(indexingTask);

            return(Task.CompletedTask);
        }