如何使用.NET Core的通用主机运行Win Forms并控制主机的生命周期?我想使用主机的默认构建器,并使用扩展方法添加我的启动窗体。我希望当启动窗体关闭时,主机也会关闭。
OswaldTechnologies.Extensions.Hosting.WindowsFormsLifetime
库来实现此操作。Install-Package OswaldTechnologies.Extensions.Hosting.WindowsFormsLifetime
使用默认的.NET Core Win Forms模板之前的Program
类:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
Program
类转换为以下内容:static class Program
{
static void Main()
{
CreateHostBuilder().Build().Run();
}
public static IHostBuilder CreateHostBuilder() =>
Host.CreateDefaultBuilder(Array.Empty<string>())
.UseWindowsFormsLifetime<Form1>()
.ConfigureServices((hostContext, services) =>
{
});
}
您可以在Github仓库中查看代码:https://github.com/alex-oswald/WindowsFormsLifetime
编辑 2021-11-16 该库已更新为.NET 6。引入最小API后,使用通用主机启动Windows Forms应用程序只需4行!
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseWindowsFormsLifetime<Form1>();
var app = builder.Build();
app.Run();