Multithreading 销毁wcf线程
我使用的是多线程wcf maxConcurrentCalls=10。通过记录对我的服务的调用,我看到10个不同的线程正在我的服务类中执行,并且它们在下面的调用中被重用 我可以告诉WCF销毁/删除一个线程,以便它在下次调用时创建一个新线程吗Multithreading 销毁wcf线程,multithreading,wcf,Multithreading,Wcf,我使用的是多线程wcf maxConcurrentCalls=10。通过记录对我的服务的调用,我看到10个不同的线程正在我的服务类中执行,并且它们在下面的调用中被重用 我可以告诉WCF销毁/删除一个线程,以便它在下次调用时创建一个新线程吗 这是因为我有线程静态状态,有时我希望被清除(在意外的异常情况下)。我正在使用线程静态作用域来提高性能。WCF不会创建新线程。它使用线程池中的线程来服务请求。因此,当一个请求开始时,它会从这个池中抽取一个线程来执行该请求,并在完成后将该线程返回到池中。WCF在下
这是因为我有线程静态状态,有时我希望被清除(在意外的异常情况下)。我正在使用线程静态作用域来提高性能。WCF不会创建新线程。它使用线程池中的线程来服务请求。因此,当一个请求开始时,它会从这个池中抽取一个线程来执行该请求,并在完成后将该线程返回到池中。WCF在下面使用线程的方式是一个不应该依赖的实现细节。永远不要在ASP.NET/WCF中使用线程静态来存储状态 在ASP.NET中,您应该使用
HttpContext.Items
和WCFOperationContext
来存储整个请求中可用的某些状态
这里有一个例子,你可以看一下,它演示了一种很好的抽象方法。这不是asp.netscenario@Stig,是的,这是一个WCF场景。类似的规则:在无法控制线程的情况下,不要使用线程静态。按照我的建议使用OperationContext。实际上,我正在使用Structuremap在线程静态作用域中提供实例。@Stig,那么你不应该这样做。您应该使用请求范围。这篇文章可能很有用:每个线程的作用域不应该在ASP.NET或WCF中使用。在不手动控制线程的情况下使用ThreadStatic是一种糟糕的设计。