【发布时间】:2017-05-02 00:36:43
【问题描述】:
我们正在使用 WCF 服务并将其托管在我们的 Windows 服务中。这个概念在here进行了解释。
我们有一个看起来像这样的 WCF 服务调用:
[System.ServiceModel.OperationContractAttribute(...)]
[System.ServiceModel.FaultContractAttribute(...)]
void TriggerLongRunningOperation(int id);
在这个 WCF 调用中,我们剥离了一些即发即弃的新线程来完成一些后台任务。大多数情况下,只有一个,但可能有多个。 WCF 请求基本上立即完成,并且即发即弃线程执行其工作。
Task task = Task.Run(() =>
{
// some stuff.
});
分拆的操作可以持续 2 分钟到 1 小时不等。
我担心 WCF 进程中有一个长时间运行的线程,但是,由于它不是通过 IIS 托管的,所以我们不必担心应用程序池回收。
在 Windows 服务中托管的 WCF 服务中运行新线程时,我应该注意哪些问题?什么情况下线程会被中止?
.NET 4.5.2
【问题讨论】:
-
你可以看看像hangfire.io这样的背景资料。这可以在 Windows 服务中运行,并提供持久的后台任务执行。
标签: .net multithreading wcf background-process