मेरे पास .NET 4 में लिखा गया एक विंडोज सेवा है जो कई थ्रेड बनाता है जिसमें लूपिंग (चलने) लूप के दौरान असीमित चलती है। जब मैं सेवा को रोकता हूं, तो चलने वाला बुलियन झूठा हो जाता है और हम थोड़ी देर के अंतराल से बाहर निकलते हैं और एक बार प्रत्येक धागा ऐसा करता है, सेवा अंततः बंद हो जाती है।मैं माइक्रोसॉफ्ट सर्विसबस संदेश रिसीवर को कॉल कैसे रद्द कर सकता हूं?
थोड़ी देर के अंदर, यह oMessageReceiver.Receive (TimeSpan.FromSeconds (30)) को कॉल करता है। इसलिए कभी-कभी जब मैं सेवा को रोकने की कोशिश करता हूं, मुझे प्राप्त() प्रक्रिया को टाइमआउट पर 30 सेकंड तक प्रतीक्षा करना पड़ता है।
एक विकल्प 30 सेकंड से कुछ समय के लिए टाइमआउट को कम करना होगा। मुझे यकीन नहीं है कि यह प्रदर्शन दंड कितना होगा, लेकिन चूंकि प्रक्रिया ब्रोकर्ड मैसेज के बिना कोई काम नहीं करती है, वास्तव में मैं श्रोता को जितनी बार संभव हो उतनी देर तक खोलना चाहता हूं।
मुझे लगता है कि MessageReceiver पर एक .BeginReceive() विधि है। मुझे लगता है कि एक प्रोग्रामिंग पैटर्न होगा जो मैं यहां उपयोग कर सकता हूं जो मेरी सेवा को लटकने से रोक देगा जबकि मैं टाइमआउट प्राप्त करने की प्रतीक्षा कर रहा था। क्या कोई वर्णन कर सकता है कि एक असीमित चल रही विंडोज सेवा में स्टार्ट/एंड एपीएम फ़ंक्शंस का उपयोग कैसे करें?