自动关闭通用主机

时间:2018-12-03 16:16:10

标签: .net .net-core

我编写了一个控制台应用程序,该应用程序主要使用通用主机来利用其IOC容器并使应用程序与我们的ASP.NET Core应用程序保持一致。

一个基本问题。主机我可以在启动代码运行后自动关闭主机(不必等待Ctrl-C)。

Jason

3 个答案:

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