我有一个.net 5.0控制台应用程序。我在任务调度程序中调度了应用程序exe。有时,当我结束任务时,应用程序在没有完成我编写的部分的情况下就终止了。(我正在停止一些服务,如果应用程序退出,并在文件中写入内容。需要一点时间)。
我尝试了以下命令,但没有工作。它在做同样的事情。
taskkill /t /f /im "ApplicationEXEName.exe"
我正在寻找一种方法来做等待完成我的行动,如果应用程序退出。
我曾尝试设置ShutdownTimeout时,应用程序主机创建这样的。但它也不起作用。
var host = Host.CreateDefaultBuilder()
.ConfigureAppConfiguration(ConfigConfiguration)
.ConfigureServices((context, services) =>
{
services.Configure<HostOptions>(opts => opts.ShutdownTimeout = TimeSpan.FromSeconds(15));
ConfigureDefaultServices(services);
ConfigureServices(configuration, services);
})
.UseSerilog(Log.Logger, true)
.Build();
1条答案
按热度按时间qgelzfjb1#
很显然你可以做这样的事
在这种情况下,如果您的应用程序正在关闭,则首先会调用ProcessExitHandler。我从来没有尝试过。如果它的工作方式是预期的,你可能能够拉任何你喜欢的东西之前,应用程序关闭。
Detect when console is being closed?
如果没有帮助,我会检查这些:
Why does closing a console that was started with AllocConsole cause my whole application to exit? Can I change this behavior?
Capture console exit C#