Web 服务中的 ThreadPool.QueueUserWorkItem 用于“即发即忘”任务

2024-01-05

这是 ASP.NET ASMX Web 服务/.NET Framework 4.0。

在 Web 服务中,我想在另一个线程上执行一个方法,例如“Fire and Forget”,以便 Web 服务返回一些价值立即响应网站。 Web 服务立即将响应返回到网站后,另一个线程上的该方法可能需要 10 分钟。另外,我不需要该方法的返回值。

我已经使用 ThreadPool.QueueUserWorkItem 测试了此场景,似乎使用 ThreadPool 启动的线程即使在 Web 服务将响应返回到网站后仍将继续执行。我在这里说得对吗?还有更好的方法来实现这一目标吗?


问题是,ASP.NET 会时不时地回收应用程序池。因为它不知道您的后台任务,所以当 AppDomain 被处置时,它不会被考虑并被中止。

大多数时候,工作都会完成,但如果运行足够长的时间,就会遇到这种情况。

有两种解决方案:

1) “正确”的方法是编写一个在 ASP.NET 外部运行的 Windows 服务。您可以通过 WCF 向服务发送指令。

2) “快速而肮脏”的方法是在 ASP.NET 站点中编写一个永远不会被用户调用的隐藏 Web 服务。您的应用程序启动对隐藏服务的异步请求,然后将其自己的结果返回给用户,无需等待。

ASP.NET 不知道对隐藏服务的请求来自您的应用程序内部 - 它只是将其视为另一个请求。因为 ASP.NET 知道这个请求,所以它在回收时不会中止它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Web 服务中的 ThreadPool.QueueUserWorkItem 用于“即发即忘”任务 的相关文章

  • ExecutorService 应该是静态的和全局的

    我想在我的应用程序中使用相同的线程池 为此 我可以使ExecutorService静态和全局 以便我可以调用ThreadUtil executorService to get ExecutorService当我需要它的时候 public c
  • GridView 模板列有条件设置为只读

    有没有办法将 GridView 上的模板列从代码隐藏设置为只读 就像如果测试Admin true make readonly false else readonly true 我发现穆罕默德 阿赫塔尔的答案几乎是正确的 只是我需要在我的案例
  • 2 个数组/图像相乘的多线程性能 - 英特尔 IPP

    我正在使用英特尔 IPP 来进行 2 个图像 数组 的乘法 我使用的是 Intel Composer 2015 Update 6 附带的 Intel IPP 8 2 我创建了一个简单的函数来乘以太大的图像 整个项目已附后 见下文 我想看看使
  • 如何延迟 onClick 操作

    我正在尝试在 java 应用程序 android 中做一些事情 并且我需要一些东西来延迟 等待循环的秒数 我怎样才能延迟android功能 我尝试过使用 Thread sleep TimeUnit sleep 但它只会执行几秒钟的不负责任的
  • ASP.NET 更新面板停止 jquery 工作

    我已经为 mouseenter mouseleave 以及 jquery Draggable 绑定了 jquery 事件集 div 被放置在更新面板中 当单击按钮时 信息将发送到数据库并更新更新面板 但是 当面板更新时 jquery 事件不
  • 在nodejs中解密.Net cookie

    我在 Net 中创建了一个加密的cookie 并尝试在nodejs 中解密它的内容 但是nodejs不断抛出异常 TypeError DecipherFinal失败 在 Net中 我使用带有密钥的AES加密方法 932D86BB1448EE
  • 为什么.NET Framework 4.0安装程序的大小小于3.0/3.5?

    我看到 Net Framework 4 0的beta2安装程序只有55MB 而 Net 3 5的安装程序有200 MB 这是怎么回事 NET 3 5 之所以这么大 是因为它在同一个包中包含 x64 版本的框架 2 0 3 0 软件包针对 x
  • global.asax 范围和生命周期澄清

    我需要在我当前正在进行的项目中实现多个应用程序级行为 有几件事我需要弄清楚 1 在哪里以及如何定义应用程序级变量 2 这些变量的生命周期是多长 或者更准确地说 在什么情况下它们会被丢弃 应用程序池回收 应用程序二进制文件从内存中删除并在下一
  • 在线找到具有两个不同参数的多个匹配绑定

    我在同一个功能文件中写了两行 何时 When user action1 key1 with value1 for atttributeType Value in Filename1 SectionId1 Then abc When user
  • 判断位图是否全黑的有效方法是什么?

    我想知道是否有一种超级有效的方法来确认 Image 对象引用全黑图像 因此位图中的每个像素都是 ARGB 255 0 0 0 你会推荐什么 大多数位图的尺寸为 1024 x 6000 像素 尽管假设它们始终是该尺寸并不安全 我需要这个 因为
  • 无法访问 Web 服务端点:Spring-WS 2

    我是 Spring WS 的新手 我已经根据 JAXB 带注释的类生成的模式定义了一个端点 但是 当我尝试通过soapUI访问端点时 我收到以下错误以及404响应代码 No endpoint mapping found for SaajSo
  • 如何处理或避免BlockedIndefinitelyOnSTM异常?

    我花了很多时间来解决我正在处理的应用程序中遇到的问题 该应用程序是一个 Web 应用程序 使用 scotty 公开 REST 端点 它使用一个TVar保持其更新的状态STM a由前端层触发的动作 由于该应用程序基于事件溯源原则 因此业务层生
  • 使用包含和不包含的 Linq 查询

    我正在尝试从数据库中获取记录 它应该 getrecords 其中名称包含 searchKey 并且名称不在 exceptTerms 数组中 并以逗号分隔 我怎样才能在 Linq 中做到这一点 Rows from u in DB Client
  • 改造2:使用json对象发送文件

    我在请求正文中发送对象 如下所示 title test description test images POST create data Call
  • ASP.NET MVC:我什么时候应该创建自定义视图引擎

    我知道什么View Engine是 我更喜欢使用Razor视图引擎只是因为它的语法简单ASPX引擎 内置视图引擎为您执行几乎所有任务 那么在什么情况下我应该创建自己的视图引擎 我用谷歌搜索了它 但得到了如何创建它的答案 而不是何时以及为什么
  • 为什么在此单元测试中,BackgroundWorker 没有在正确的线程上调用 RunWorkerCompleted?

    backgroundWorker 的全部目的是在执行耗时的任务后更新 UI 组件正如广告所宣传的那样在我的 WPF 应用程序中 但是在我的测试中 回调不会在调用线程上调用 Test public void TestCallbackIsInv
  • Netty UDP 服务器中的线程未同时执行

    我正在分析的代码使用 Netty NioDatagramChannelFactory 创建 UDP 服务器 它创建一个线程池 ExecutorService threadPool Executors newCachedThreadPool
  • 寻找自定义 SynchronizationContext 的示例(单元测试所需)

    我需要定制同步上下文 http msdn microsoft com en us library system threading synchronizationcontext aspx that 拥有一个运行 Posts 和 Sends
  • 如何将 .ashx 处理程序与 asp:Image 对象一起使用?

    我有一个 ashx 处理程序 using System using System Web public class Thumbnail IHttpHandler public void ProcessRequest HttpContext
  • List 与 IEnumerable 的协变和逆变

    所以 假设我有 Public Interface ISomeInterface End Interface Public Class SomeClass Implements ISomeInterface End Class 如果我有MyL

随机推荐

  • java系统范围的键盘和鼠标状态

    有没有办法在系统范围内侦听鼠标和键盘事件 而不将它们从系统队列中取出 例如 有没有办法设置一个恶魔 比如说 它会监听并报告每个键盘和鼠标事件 使用纯Java 是不可能的 但是您可以使用 JNI Java 本机接口 它适用于用 C 编写并本机
  • UPDATE 语句包含在 IF EXISTS 块中

    我正在尝试编写一个更新列的 DML 脚本 但我想确保该列首先存在 因此我将其包装在 IF EXISTS 块中 IF EXISTS SELECT FROM INFORMATION SCHEMA COLUMNS WHERE TABLE NAME
  • 如果消息被编辑,防咒骂系统将不起作用

    基本上 如果您说了一些不是脏话的内容 但随后将消息编辑为脏话 机器人将不会检测到它 我该如何解决 这是我的代码 client event async def on message message if message author bot
  • 通过选择散点图上的点来更新虚线表

    我正在制作仪表板 这是我的代码 IMPORT SECTION import dash import dash table import dash core components as dcc import dash html compone
  • 非静态类与静态类相比有哪些优点?

    非静态类与静态类相比有哪些优点 静态类不需要实例化 所以我们可以直接使用ClassName MemberName 那么非静态类有什么用呢 静态类与非静态类基本相同 但有一个区别 静态类不能被实例化 换句话说 不能使用new关键字来创建类类型
  • Sublime Text 3 上的 Python 3.4

    我按照以下步骤在 Sublime Text 3 上运行 Python 3 选择菜单 工具 gt 构建 gt 新建构建系统 我输入了以下内容 cmd python3 file selector source python file regex
  • 显示同一类方法的已弃用警告

    使用 eclipse 我希望尽快看到警告any我使用的方法标记为 Deprecated 如果是这样 方法调用将被正确划掉 但如果该方法源自同一个类 则 Eclipse 不会发出警告 请参阅下面的屏幕截图 为了更好地重现 我还将提供文本形式的
  • python 如何在数据框中执行以下操作

    df1 pd DataFrame Year 1A 2A 3A 4A 5A Tval1 1 9 8 1 6 Tval2 34 56 67 78 89 它看起来更像这样 我想更改它 使其看起来像这样 第二列移动到单独的行下方 想法是从中获取数字
  • 如何确定 Android View 是否被其他 View 遮挡

    我想检查特定视图 例如 TextView 是否被任何其他视图 例如导航抽屉但不一定 遮挡 我明白了 即使视图被其他视图 布局遮挡 View GetVisibilty View IsShown 也会返回 true None
  • constexpr 比 const 更“恒定”吗?

    C 编程语言第四版 Bjarne Stroustrup 强调我的 2 2 3 常数 在一些地方 语言规则需要常量表达式 例如 数组边界 2 2 5 7 3 大小写标签 2 2 4 9 4 2 一些 模板参数 第 25 2 节 和使用 con
  • io.sockets.emit 和广播有什么区别?

    io sockets emit 和 socket broadcast emit 有什么区别 广播是否只向每个人发送 但发送它的套接字除外 看起来它们可以互换使用 io sockets on connection function socke
  • 捕获when.js未处理的拒绝

    我想捕获when js 未处理的拒绝 以便我可以记录它们 为了实现这一点 我重写了 console warn 但是它可以记录除 when js 以外的我不感兴趣的内容 ref https github com cujojs when blo
  • > /dev/null 如何消耗输出流?

    我用过 dev nullbash 编程中的很多内容都将不必要的输出发送到黑洞中 例如 这个命令 echo foo bar gt dev null 将不会echo任何事物 我读过 dev null是一个空文件 用于通过重定向处理不需要的输出
  • 启动自定义 URL 的图像 - 故事板或资产目录

    我试图在自定义 url 启动应用程序时拥有自定义启动图像 有没有办法指定自定义故事板 UILaunchStoryboardName 或资产目录中的图像以在此场景中使用 从 iOS 8 3 开始这是不可能的
  • 如果目标不为空,自动映射器可以忽略目标/仅更改空字段

    背景 我正在开发一个网络服务 我希望允许具有空字段的输入表示 不进行更新 输入对象与数据库模型非常相似但不完全相同 因此我们使用自动映射器来进行转换 因此 在更新的情况下 我希望能够获取现有值 使用它们覆盖输入中的任何空字段 然后保存它以执
  • 为什么 std::ofstream 在没有 std::ios_base::trunc 的情况下截断? [复制]

    这个问题在这里已经有答案了 根据这个 C 参考 http www cplusplus com reference fstream ofstream ofstream http www cplusplus com reference fstr
  • 如何获取 PostgreSQL 支持的时区列表?

    这个问题是不言自明的 我在这里找到了这个文档 https www postgresql org docs current view pg timezone names html https www postgresql org docs c
  • 跟踪多个帐户并使用链接器时,Google Analytics“未检测到 HTTP 响应”

    我不仅试图跟踪两个不同的 GA 帐户 而且还需要在一个帐户上使用站点之间的链接器 Google 使用链接器在网站上返回 错误 未检测到 HTTP 响应 这是代码 感谢您的帮助 function i s o g r a m i GoogleA
  • IOS Safari 支持 Shadow DOM 吗?

    我的应用程序能够渲染 Shadow DOM 但检查器无法显示 Shadow 根 谁能帮我解决这个问题吗 这取决于您指的是哪种 Shadow DOM Shadow DOM v0 或 Shadow DOM v1 See http caniuse
  • Web 服务中的 ThreadPool.QueueUserWorkItem 用于“即发即忘”任务

    这是 ASP NET ASMX Web 服务 NET Framework 4 0 在 Web 服务中 我想在另一个线程上执行一个方法 例如 Fire and Forget 以便 Web 服务返回一些价值立即响应网站 Web 服务立即将响应返