【问题标题】:Automatic Shutdown of Generic Host通用主机自动关机
【发布时间】:2018-12-03 16:16:09
【问题描述】:

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

给你一个基本的问题。主机是否在启动代码运行后自动关闭主机(不等待 Ctrl-C)。

杰森

【问题讨论】:

标签: .net .net-core


【解决方案1】:

为此有一个特殊的接口,IApplicationLifetime

在你的构造函数中注入这个并调用 StopApplication() 来优雅地关闭它。这也允许您在其他地方处理应用程序的启动和关闭,因此您无需自己协调。

您可以在此处阅读更多相关信息: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host#iapplicationlifetime-interface

【讨论】:

    【解决方案2】:

    Environment.Exit(0);

    尝试在执行点结束时调用它。 但是如果你的代码中有一些其他线程、非托管资源或其他不可预测的东西,它可能无法正常工作。


    另一件事是您可能根本不必使用 GenericHost。请参阅this 问题的答案。它可能会指出如何在没有 GenericHost 的情况下创建 DI 容器。

    【讨论】:

      【解决方案3】:

      你可以使用 host.StartAsync()

      static async Task<int> Main(string[] args) 
      {
          using var host = CreateHostBuilder(args).Build();
          await host.StartAsync();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-27
        • 1970-01-01
        • 2017-02-02
        • 1970-01-01
        • 1970-01-01
        • 2016-12-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多