using FastGithub.Windows.Hosting; using Microsoft.Extensions.DependencyInjection; using System; using System.Windows.Forms; namespace Microsoft.Extensions.Hosting { /// /// IHostBuilder的WinForm扩展 /// public static class WinFormHostBuilderExtensions { /// /// 指定WinForm的主窗体 /// /// /// * 该方法需要在services.AddHostedService()之前调用 /// /// /// /// public static IHostBuilder UseWinForm(this IHostBuilder hostBuilder) where TMainForm : Form { return hostBuilder.ConfigureServices((context, services) => { services .AddSingleton() .AddSingleton() .AddHostedService>(); }); } /// /// 使用WinForm生命周期 /// /// /// * 关闭主窗体或调用Appliaction.Exit()之后生命结束 /// /// /// public static IHostBuilder UseWinFormHostLifetime(this IHostBuilder hostBuilder) { return hostBuilder.UseWinFormHostLifetime(c => { }); } /// /// 使用WinForm生命周期 /// /// /// * 关闭主窗体或调用Appliaction.Exit()之后生命结束 /// /// /// Applicaiton选项 public static IHostBuilder UseWinFormHostLifetime(this IHostBuilder hostBuilder, Action configureOptions) { return hostBuilder.ConfigureServices((context, services) => { services.Configure(configureOptions); services.AddSingleton(); }); } } }