我想在Service Fabric中托管.NET 4.6.2控制台应用程序。 我的应用程序正在监听管理任务的控制台输入事件。
最重要的一个是'q'来停止应用 - 但以优雅的方式。
在Service Fabric中是否可以通过guest虚拟机可执行文件获得此功能?
当然不是'按下按钮',而是删除了服务或任何事件。
如果无法与来宾可执行文件实现这种集成 - 您建议在哪个项目模板上构建?
答案 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意外死亡时。