【发布时间】:2009-07-18 03:02:21
【问题描述】:
重复
这是Dealing with a longer running process in WCF 的近似副本。请考虑将您的答案发布到那个而不是这个。
原始问题
我正在实现一个应用程序的业务层,该应用程序必须在预定时间运行一些后台进程。业务层由多个 WCF 服务组成,这些服务都在同一个 Web 应用程序下运行。
这个想法是定义一组必须在不同时间运行的“任务”(例如,每 5 分钟、每天 23:00 等)。这并不难实现为 Windows 服务,但问题是,任务需要访问服务中的数据缓存,因此这个“调度程序”必须在 IIS 上下文下运行才能访问该数据。
我目前正在做的是在 WCF 服务之一中使用自定义 ServiceHostFactory,它会生成子线程并返回。子线程每X分钟休眠和唤醒一次,查看是否有定时任务并执行。 但我担心 IIS 在回收应用程序池时或在一些非活动时间后(例如,在任何 WCF 服务上没有活动,它侦听来自表示层的请求)时会随机杀死我的线程。无论服务上的活动如何,线程都必须不间断地运行。这真的可能吗?
我找到了an article by someone doing the same thing,但他的解决方案似乎是定期从子线程本身 ping 服务器。希望有更好的解决方案。
【问题讨论】:
-
这是stackoverflow.com/questions/1142698/… 的非常接近的副本。请看一下,看看你是否同意我的看法。
标签: asp.net wcf multithreading iis-7