c# - 在调用任务的方法退出后,如何使任务保持事件状态?

标签 c# multithreading web-services task-parallel-library asp.net-web-api

我正在编写一个网络服务,它通过存储过程将长时间运行的批量插入命令发送到 sql 数据库。我不希望 web 服务在等待来自数据库的响应时挂起,所以我只想返回一个 http 响应,让客户端知道在我开始任务后请求已发送到数据库。但是一旦我返回响应,任务就会失去上下文并变成垃圾,对吧?我该如何保持它的活力?

最佳答案

一般来说,从 IIS 中分离出一些东西来做工作并不是一个好主意。如果 AppPool 重新启动会怎样?如果出现异常会怎样?

相反,我建议编写一个 Windows 服务并让它负责工作。

根据您的意见,我会看看您是否可以提出以下要求(理论上):

所有外部调用都是通过网络服务完成的。 Web 服务使用单独的程序集进行实际数据访问。

单独的 Windows 服务用于长时间运行的进程,该进程也将使用与 Web 服务相同的数据访问程序集。

这确实是最好的方法(但根据要求不一定可行)。

关于c# - 在调用任务的方法退出后,如何使任务保持事件状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23160282/

相关文章:

java - 使用锁对象来同步我的成员变量

java - 是否可以利用Stream API提供的并行性来调用固定数量的相互独立的方法?

java - CXF 冲突 xmlschema 和 xmlschema-core 依赖

C# 目录复制不返回错误,但不复制目录

c# - MVC @Html.HiddenFor 渲染没有值的 html 表单

python - Python中的多线程问题

java - 如何在 spring webservice 上下文中返回网页?

c# - 使用手动设置的高度对齐上下文菜单项垂直居中的文本

c# - Asp.net MVC 中的 Webhook

web-services - 使用 WS 网关和 LDAP 向 Web 服务提供 AAA 的最优雅、最有效的方法是什么?