.net 如何不间断地退出控制台应用程序exe,(应用程序在ProcessExit方法完成之前终止)

biswetbf  于 2023-06-25  发布在  .NET
关注(0)|答案(1)|浏览(162)

我有一个.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();
qgelzfjb

qgelzfjb1#

很显然你可以做这样的事

class Program
{
    static void Main( string[] args )
    {
        AppDomain.CurrentDomain.ProcessExit += ProcessExitHandler ;
    }

    static void ProcessExitHandler( object sender , EventArgs e )
    {
        throw new NotImplementedException("You can't shut me down. I quit!" ) ;
    }
}

在这种情况下,如果您的应用程序正在关闭,则首先会调用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#

相关问题