我编写了一个控制台应用程序,该应用程序主要使用通用主机来利用其IOC容器并使应用程序与我们的ASP.NET Core应用程序保持一致。
一个基本问题。主机我可以在启动代码运行后自动关闭主机(不必等待Ctrl-C)。
Jason
答案 0 :(得分:0)
Environment.Exit(0);
尝试在执行点结尾处调用此函数。 但是,如果您的代码中包含其他线程,非托管资源或其他不可预测的内容,则可能无法正常工作。
另一件事是您可能根本不需要使用GenericHost。请参阅this问题的答案。它可能会指出您如何在没有GenericHost的情况下创建DI容器。
答案 1 :(得分:0)
为此IApplicationLifetime有一个特殊的界面。
将此注入到构造函数中,并对其调用StopApplication()进行正常关闭。这也使您可以在其他地方处理应用程序的启动和关闭,因此您无需自己进行协调。
您可以在此处了解更多信息: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host#iapplicationlifetime-interface
答案 2 :(得分:0)
您可以使用host.StartAsync()
static async Task<int> Main(string[] args)
{
using var host = CreateHostBuilder(args).Build();
await host.StartAsync();
}