我有一个网络服务,它需要很多时间来执行。我计划将处理任务委托给后台线程并立即将确认响应返回给用户。
在这种情况下,我担心后台线程的生命周期。
后台线程会在主方法/线程完成执行之前完成委托任务吗?
我有一个网络服务,它需要很多时间来执行。我计划将处理任务委托给后台线程并立即将确认响应返回给用户。
在这种情况下,我担心后台线程的生命周期。
后台线程会在主方法/线程完成执行之前完成委托任务吗?
如果应用程序池被回收,看起来您的后台线程可能会中止。看看这篇文章ThreadPool.QueueUserWorkItem in Web Service for “Fire and Forget” 任务
您应该异步调用您的服务。
var service = new YouServiceClient();
service.SomeMethodCompleted +=
(sender, args) +=
{
// Put code here to handle the response and extract a return value or whatever.
}
service.SomeMethodAsync();
有关更多详细信息,请参阅如何:异步调用 WCF 服务操作。