private void RememberExecution([NotNull] FileSystemPath path, bool withProgress)
        {
            var definition = Lifetime.CreateNested();

            if (withProgress)
            {
                var progress = new ProgressIndicator(definition.Lifetime);
                IProgressIndicator iProgress = progress;
                iProgress.Start(1);
                progress.Advance();
                var task = RiderBackgroundTaskBuilder
                           .FromProgressIndicator(progress)
                           .AsIndeterminate()
                           .WithHeader("Executing template")
                           .WithDescription($"{path.Name}")
                           .Build();
                Solution.Locks.ExecuteOrQueueEx(
                    definition.Lifetime,
                    "T4 execution progress launching",
                    () => BackgroundTaskHost.AddNewTask(definition.Lifetime, task)
                    );
            }

            RunningFiles[path] = definition;
        }
Example #2
0
 public BackgroundTaskController(IBackgroundTaskStore store, ITypeResolver typeResolver, BackgroundTaskHost host,
                                 IOptionsMonitor <BackgroundTaskOptions> options)
 {
     _store        = store;
     _typeResolver = typeResolver;
     _host         = host;
     _options      = options;
 }
Example #3
0
        private static BackgroundTaskHost CreateBackgroundTaskHost(Action <BackgroundTaskOptions> configureOptions)
        {
            var services = new ServiceCollection();

            services.AddBackgroundTasks(configureOptions);
            var serviceProvider = services.BuildServiceProvider();
            var timestamps      = new LocalServerTimestampService();
            var scheduler       = new BackgroundTaskHost(serviceProvider, timestamps,
                                                         new InMemoryBackgroundTaskStore(timestamps), new JsonBackgroundTaskSerializer(),
                                                         new ReflectionTypeResolver(),
                                                         serviceProvider.GetRequiredService <IOptionsMonitor <BackgroundTaskOptions> >(),
                                                         serviceProvider.GetService <ISafeLogger <BackgroundTaskHost> >());

            return(scheduler);
        }
Example #4
0
        private BackgroundTaskHost CreateBackgroundTaskHost(Action <BackgroundTaskOptions> configureOptions)
        {
            var services = new ServiceCollection();

            services.AddBackgroundTasks(configureOptions);

            var serviceProvider = services.BuildServiceProvider();

            var serializer   = new JsonBackgroundTaskSerializer();
            var typeResolver = new ReflectionTypeResolver();
            var options      = serviceProvider.GetRequiredService <IOptionsMonitor <BackgroundTaskOptions> >();
            var host         = serviceProvider.GetService <ISafeLogger <BackgroundTaskHost> >();

            var scheduler = new BackgroundTaskHost(serviceProvider, Store, serializer, typeResolver, options, host);

            return(scheduler);
        }
Example #5
0
        static void Main()
        {
            // --- Create performance counters if not installed yet
            var counter = PmcManager.GetCounter<TasksProcessedPmc>("consumer");
            if (!counter.HasInstance)
            {
                Console.WriteLine("Installing performance counters...");
                var pmcData = new PmcCreationData();
                pmcData.MergeCountersFromAssembly(typeof(TasksProcessedPmc).Assembly);
                PmcManager.InstallPerformanceCounters(pmcData);
            }

            // --- Clean up the message queues
            var requestQueue = ResourceConnectionFactory.CreateResourceConnection<INamedQueue>(REQUEST_QUEUE);
            requestQueue.Clear();
            var responseQueue = ResourceConnectionFactory.CreateResourceConnection<INamedQueue>(RESPONSE_QUEUE);
            responseQueue.Clear();

            // --- Set up the background host
            var settings = AppConfigurationManager.GetSettings<BackgroundTaskHostSettings>(BACKGROUND_TASK_HOST_SECTION);
            var host = new BackgroundTaskHost(settings);

            // --- Do the work for 10 seconds
            Console.WriteLine("Starting background task host.");
            host.Start();
            Thread.Sleep(5000);

            var context = host.Configuration.DefaultContext;
            var processors = host.Configuration.GetTaskProcessors();
            foreach (var processor in processors.Where(processor => processor.Name == "Processor"))
            {
                processor.InstanceCount = 3;
                break;
            }

            host.Reconfigure(new BackgroundTaskHostSettings(context, processors));

            Thread.Sleep(5000);

            Console.WriteLine("Stopping background task host.");
            host.Stop();
        }
 public BackgroundTaskService(BackgroundTaskHost host) => _host = host;