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); }