【发布时间】:2019-11-15 23:30:50
【问题描述】:
我已阅读 Stephen's article 关于在 Asp.net 中触发并忘记后台操作的内容。
不建议使用Task.Run 进行即发即弃,因为 Asp.net 不知道您已将任务排队。
因此,如果即将发生回收,则任务无法知道它。
这就是HostingEnvironment.QueueBackgroundWorkItem 进入的地方。
它将知道回收即将发生,并将调用取消令牌。
但是!
FWIK - 一旦主线程完成,后台任务就会被“终止”。
这意味着如果请求进入(正在创建/获取新线程)并调用Task.Run,并且响应已完成(但 Task 尚未完成),则 Task 将被终止。
问题:
QueueBackgroundWorkItem 能解决这个问题吗?还是只存在警告回收?
换句话说,如果有一个运行QueueBackgroundWorkItem的请求并且响应已经完成,那么QueueBackgroundWorkItem会继续执行它的代码吗?
文档说:“独立于任何请求”,但我不确定它是否回答了我的问题
【问题讨论】:
标签: c# asp.net .net multithreading background-process