ServiceBehaviour thuộc tính cho phép bạn chỉ định hành vi. Trong trường hợp của bạn cho chủ đề duy nhất bạn sẽ sử dụng như sau:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.PerCall)]
public class Service : IService
{
}
Bạn might want to read about differentInstanceContextMode
s để giúp bạn tốt hơn chọn vào cách bạn muốn dịch vụ để hành xử.
Bạn cũng cần phải thêm vào app.config
hành vi dịch vụ mới của bạn (hoặc chỉnh sửa hiện có):
<behavior name="wsSingleThreadServiceBehavior">
<serviceThrottling maxConcurrentCalls="1"/>
</behavior>
và trong cấu hình hành vi của bạn trong cùng một app.config
bộ behaviorConfiguration như sau:
<service behaviorConfiguration="wsSingleThreadServiceBehavior" name="IService">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsEndpointBinding" name="ConveyancingEndpoint" contract="IService" />
</service>
Hope điều này giúp bạn tiết kiệm thời gian
Nguồn
2016-05-09 15:31:34
Tôi biết nhận xét đến trễ một chút, nhưng dù sao - không sử dụng cách tiếp cận này! Về cơ bản, điều này sẽ gây ra bế tắc với chuỗi Finalizer để hoàn tất sẽ không hoạt động gây ra rò rỉ tài nguyên. Tôi sẽ thêm url với nhiều chi tiết hơn. – Mihailo
http://stackoverflow.com/questions/2001667/net-windows-service-needs-to-use-stathread – GregC