स्टार्टर्स के लिए आपको आम तौर पर अपने IObservable
और IObserver
ऑब्जेक्ट्स को लागू नहीं करना चाहिए। आपका प्रश्न क्यों संकेत देता है। अंतर्निहित व्यवहार को सही करना बहुत मुश्किल है।
अब प्रत्येक कॉल IObservable.Subscribe
पर IDisposable
देता है। इसका उपयोग तब किया जाता है जब Subscribe
का कॉलर OnCompleted
या OnError
से पहले एक अवलोकन योग्य से सदस्यता समाप्त करना चाहता है। हालांकि, अगर OnCompleted
या OnError
कहा जाता है तो IDisposable
स्वचालित रूप से निपटाया जाता है। एक अवलोकन योग्य संग्रह पूरा होने पर प्रभावी रूप से आरएक्स स्वचालित रूप से स्वयं के बाद साफ हो जाता है।
प्रत्येक व्यक्ति पर्यवेक्षक को अपने स्वयं के सदस्यता जीवनकाल को प्रबंधित करने की आवश्यकता नहीं होती है। पर्यवेक्षक को केवल OnCompleted
/OnError
संदेश का जवाब देना होगा।
आपके कोड में मैं सुझाव दूंगा कि आप अपना कोड थोड़ा बदलना चाहते हैं। मुझे CommandReaderPublisher
कक्षा Subscribe
विधि के साथ CommandReader
कक्षा से अधिक उपयुक्त होने की उम्मीद होगी। एक बार आरएक्स स्ट्रीम पूरा हो जाने पर इसका उपयोग जारी नहीं रह सकता है।
मुझे आश्चर्य है कि OnCompleted
कॉलिंग OnError(exception)
से बेहतर होगी जब अंतर्निहित धारा बंद हो जाती है। अगर कोई त्रुटि होती है तो यह ठीक है, लेकिन अगर यह बंद हो जाता है तो ONCompleted
बेहतर हो सकता है।
+1 IObserver/IObservable इंटरफेस को लागू न करें। आरएक्स लाइब्रेरी का प्रयोग करें। अवलोकन योग्य। बनाएं/जेनरेट/इत्यादि हैं कि आप एक अवलोकन अनुक्रम कैसे बनाते हैं और सब्सक्रिप्शन एक्सटेंशन विधियां हैं कि आप उपभोक्ता को एक अवलोकन अनुक्रम कैसे बनाते हैं। www.IntroToRx.com। –