Service Fabric Guest Executable托管和优雅停止

时间:2016-09-20 14:11:12

标签: azure-service-fabric

我想在Service Fabric中托管.NET 4.6.2控制台应用程序。 我的应用程序正在监听管理任务的控制台输入事件。

最重要的一个是'q'来停止应用 - 但以优雅的方式

在Service Fabric中是否可以通过guest虚拟机可执行文件获得此功能?
 当然不是'按下按钮',而是删除了服务或任何事件。

如果无法与来宾可执行文件实现这种集成 - 您建议在哪个项目模板上构建?

3 个答案:

答案 0 :(得分:2)

Service Fabric会在杀死它之前向guest虚拟机可执行进程发送一个Ctrl-C信号,从而允许正常关闭。您可以使用Console.CancelKeyPress事件或Win32 SetConsoleCtrlHandler函数来获取通知。请注意,必须将exe编译为控制台应用程序才能使其正常工作。

答案 1 :(得分:0)

执行此操作的一种方法是使用DeleteServiceAsync以编程方式删除服务。 您也可以使用CreateServiceAsync

重新创建它

答案 2 :(得分:0)

在有状态或无国籍的服务类中:

class MyService : StatefulService /* or StatelessService */
{
    protected override Task OnCloseAsync(CancellationToken cancellationToken)
    {
        // your graceful shutdown code goes here
    }
}

但是不能保证执行该方法,例如当托管VM意外死亡时。