我正在使用多线程wcf maxConcurrentCalls = 10.通过记录对我的服务的调用,我看到我的服务类中正在执行10个不同的线程,并且它们在以下调用中被重用。
我可以告诉WCF销毁/删除一个线程,以便在下次调用时创建一个新线程吗?
这是因为我有线程静态状态,我有时希望被清除(在意外的异常情况下)。我正在使用线程静态范围来获得性能。
答案 0 :(得分:1)
WCF不会创建新线程。它使用线程池中的线程来处理请求。因此,当请求开始时,它会从此池中绘制一个线程来执行请求,并在完成后将线程返回到池中。 WCF使用下面的线程的方式是您不应该依赖的实现细节。您永远不应该在ASP.NET / WCF中使用Thread Static来存储状态。
在ASP.NET中,您应该使用HttpContext.Items
并在WCF OperationContext
中存储一些可在整个请求中使用的状态。
这是一个good blog post你可以看一下,这说明了一个很好的抽象方法。