asp.net – 创建一个工作线程,并在整个应用程序生命周期内保持活
我有一个req,我必须创建一个工作线程,并在我的应用程序生命周期内保持它活着,以执行一些背景任务.那么有什么办法可以在我的应用程序需要时将任务堆叠到这个工作线程.
解决方法
更新:即使您已在评论中指出您必须在Asp.Net中执行此操作,我将在下面留下我的原始内容,因为它有一些有用的链接.
由于Asp.Net使用线程池来调度传入的请求,因此在线程池上运行后台任务将占用一个线程并影响Asp.Net性能.因此,您将不得不使用Thread类. 要实现您的方案,您可以创建一个新的Thread实例,将其IsBackground属性设置为true并启动它.一旦启动,线程将等待 这是最简单的实现,它不允许在请求和后台线程之间传递参数,并且不允许一次排队多个任务.如果需要支持参数或排队,则必须在传入请求无法访问的某个地方保留对线程对象的引用. 如果IIS决定回收Asp.Net工作进程,您还必须考虑在任何时间点都可以终止后台线程.此外,在后台线程中抛出异常将导致IIS回收Asp.Net工作进程. 围绕后台线程的身份还有一些考虑因素.特别是,后台线程不能轻易模拟当前传入请求的用户身份.这是可能的,但每次请求安排新任务时,都需要您传递用户身份. 如果您告诉我们您编写代码的语言和平台,将会非常有用. 如果它恰好是Windows平台,那么有一个线程池可以“借用”线程来完成任务.您可以使用 您还可以使用 对于Linux或OS X,你可能会看一下 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 向@ Html.ValidationSummary添加错误消息
- asp.net mvc 之旅 —— 第六站 ActionFilter的应用及源码分
- asp.net – 处理单数和多个控制器/路由
- asp.net-core – 如何使用FluentValidation.AspNetCore和Fl
- asp.net – 在处理期间存储用户名/密码
- asp.net – 避免为每个转发器重新加载所有XML数据 – vb.ne
- asp.net-mvc – 将Orchard CMS部署到共享主机的正确方法是什
- asp.net – 在UserControl中将选定值设置为DropDownList
- asp.net – WCF中的405方法不允许错误
- asp.net-mvc – 使用mvc-mini-profiler