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