internal void ProcessDataflowChanges(IProjectVersionedValue <DesignTimeInputSnapshot> value) { // Cancel any in-progress queue processing _compilationCancellationSource?.Cancel(); DesignTimeInputSnapshot snapshot = value.Value; // add all of the changes to our queue _queue.Update(snapshot.ChangedInputs, snapshot.Inputs, snapshot.SharedInputs, snapshot.TempPEOutputPath); Assumes.Present(_project.Services.ProjectAsynchronousTasks); // Create a cancellation source so we can cancel the compilation if another message comes through _compilationCancellationSource = CancellationTokenSource.CreateLinkedTokenSource(_project.Services.ProjectAsynchronousTasks.UnloadCancellationToken); JoinableTask task = _scheduler.ScheduleAsyncTask(ProcessCompileQueueAsync, _compilationCancellationSource.Token); // For unit testing purposes, optionally block the thread until the task we scheduled is complete if (CompileSynchronously) { _threadingService.ExecuteSynchronously(() => task.Task); } }
public Task ApplyAsync(DesignTimeInputSnapshot value) { var input = IProjectVersionedValueFactory.Create(value); return(base.ApplyAsync(input)); }