ServiceBehaviour विशेषता आपको व्यवहार निर्दिष्ट करने की अनुमति देती है। एकल थ्रेड के लिए आपके मामले में आप निम्नलिखित का प्रयोग करेंगे:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single, InstanceContextMode = InstanceContextMode.PerCall)]
public class Service : IService
{
}
आप might want to read about differentInstanceContextMode
रों आप बेहतर है आप कैसे सेवा व्यवहार करने के लिए चाहते हैं पर चुनने में मदद करने।
आप भी अपनी app.config
नई सेवा व्यवहार में जोड़ने के लिए (या एक मौजूदा संपादित करें) की जरूरत है: निम्नलिखित की तरह
<behavior name="wsSingleThreadServiceBehavior">
<serviceThrottling maxConcurrentCalls="1"/>
</behavior>
और एक ही app.config
सेट behaviorConfiguration में अपने व्यवहार विन्यास में:
<service behaviorConfiguration="wsSingleThreadServiceBehavior" name="IService">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsEndpointBinding" name="ConveyancingEndpoint" contract="IService" />
</service>
आशा यह आपको कुछ समय बचाता है
स्रोत
2016-05-09 15:31:34
मुझे पता है कि टिप्पणी थोड़ी देर हो चुकी है, लेकिन फिर भी - इस दृष्टिकोण का उपयोग न करें! असल में, यह फाइनलाइज़र थ्रेड के साथ डेडलॉक का कारण बनता है ताकि अंतिमकरण संसाधनों की रिसाव के कारण काम नहीं करेगा। मैं जल्द ही अधिक जानकारी के साथ यूआरएल जोड़ूंगा। – Mihailo
http://stackoverflow.com/questions/2001667/net-windows-service-needs-to-use-stathread – GregC