using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using WindowWatcher; var hostCts = new CancellationTokenSource(); var builder = Host.CreateApplicationBuilder(args); builder.Services.Configure( builder.Configuration.GetSection(WindowWatcherOptions.SectionName)); builder.Services.AddHttpClient("TaskTrackerApi", (sp, client) => { var config = sp.GetRequiredService>().Value; client.BaseAddress = new Uri(config.ApiBaseUrl); }); builder.Services.AddHostedService(); var host = builder.Build(); // Run the host in a background thread var hostTask = Task.Run(() => host.RunAsync(hostCts.Token)); // Run WinForms tray icon on the main thread Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new TrayApplicationContext(hostCts)); // Wait for host to finish await hostTask;