gpt4 book ai didi

asp.net - ASP.NET应用程序中的异步调用

转载 作者:行者123 更新时间:2023-12-03 13:21:55 24 4
gpt4 key购买 nike

我不是在谈论异步页面或异步处理程序,我只是想知道我在调用异步方法时是否担心任何副作用,该方法将在页面渲染完成后终止。

给出的示例:每次用户登录时,我必须启动一个繁重且耗时的SQL操作,但是该用户不需要知道该操作的结果,因此我可以使用BeginExecuteNonQuery执行查询而无需传递任何回调,并完成页面渲染。

我担心的是,如果HTTP调用结束(因为已提供页面),并且我已经异步执行的所有命令已经在运行,会发生什么情况? ASP.NET或IIS是否会剪切,破坏或使任何内容无效?

干杯。

最佳答案

即使请求已完成,该操作也将运行。但是,请注意,ASP.NET主机会主动杀死线程。当IIS有任何理由卸载或回收AppDomain时,您的后台线程将被杀死。在几种情况下会发生卸载。例如,在一段时间内没有新请求进入时。或者在一定时间内从应用程序中触发了太多异常。或当内存压力过高时。

如果您需要保证操作将完成,我认为您可以做三件事:

  • 加快操作,使其可以同步运行,或者
  • 将该繁琐的操作移至Windows Service并执行
  • 您可以挂接到HostingEnvironment.RegisterObject方法(如Phill Haack解释here所述)(要求完全信任),以防止在该线程运行时AppDomain关闭。
  • 关于asp.net - ASP.NET应用程序中的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5881400/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com