You need to enable JavaScript to run this app. 如何让Windows Server重启时等待ASP.NET异步后台线程执行完成
优惠活动
大模型
产品
解决方案
定价
更多

如何让Windows Server重启时等待ASP.NET异步后台线程执行完成

IIS后台线程跨场景等待适配问题

已实现适配能力

  • 完成了对应功能改造,在IIS应用程序池回收、应用程序池关停场景下,可实现IIS等待后台线程执行完毕的逻辑,解决了半数相关问题

现存问题与目标诉求

  • 当前方案在Windows Server重启场景下完全失效:系统仅为后台线程预留30秒执行时间,超时后会直接强制终止工作进程
  • 预期目标:找到可落地的实现方案,让系统暂停关机流程,直至所有后台线程执行完毕。已知普通Windows进程本身就支持延后关机能力,说明该能力在Windows系统层面是可实现的,大概率是IIS/ASP.NET的运行机制阻碍了方案落地

相关说明:我们清楚ASP.NET并非承载后台线程的最优框架,也知晓可通过在重启前先执行iisreset规避该问题,但服务器的重启操作往往不在我们的掌控范围内。

现有实现代码

public class BackgroundRunner : IRegisteredObject
{
    public BackgroundRunner()
    {
        // 方案1:基于IRegisteredObject接口实现
        HostingEnvironment.RegisterObject(this);

        // 方案2:绑定的事件触发时间比方案1早1秒
        typeof(HostingEnvironment).GetEvent("StopListening").AddEventHandler(null, new EventHandler((object sender, EventArgs e) =>
        {
            FinishUp();
        }));
    }

    public void Stop(bool immediate)
    {
        FinishUp();
        HostingEnvironment.UnregisterObject(this);
    }
}

内容的提问来源于stack exchange,提问作者RoofShrubbery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 06:45:04