मैं अपने विचारों में से किसी एक में कुछ थ्रॉटलिंग व्यवहार को लागू करने के लिए देख रहा हूं। यह एक चांदी का आवेदन है, हालांकि मुझे नहीं लगता कि यह विशेष रूप से महत्वपूर्ण है।इवेंट थ्रॉटलिंग/क्यूइंग - प्रतिक्रियाशील एक्सटेंशन?
- Property1
- Property2
- Property3
जब भी इन गुणों में से एक अद्यतन किया जाता है, एक ताज़ा आवश्यक है:
तीन गुणों के साथ एक वर्ग पर विचार करें।
private void Refresh()
{
//Call out to the server, do something when it comes back
}
मेरे लक्ष्यों इस प्रकार हैं: एक ताज़ा प्रगति पर है
- हैं, तो हम आदर्श सर्वर से कॉल रद्द कर देना चाहिए, और
- एक नया अनुरोध जारी एक संपत्ति बदले जाने पर हमें कुछ छोटी खिड़की (शायद 0.1 सेकंड) छोड़नी चाहिए जहां हम अतिरिक्त बदलावों की प्रतीक्षा करते हैं। इस तरह, यदि एकाधिक गुण तेजी से बदल दिए जाते हैं (उदाहरण के लिए, प्रोग्रामेटिक रूप से) हम अनुरोध के साथ सर्वर को स्पैम नहीं करते हैं। प्रत्येक परिवर्तन पर रीसेट करने के लिए उस 0.1 सेकंड विंडो के लिए ठीक है, लेकिन आवश्यक नहीं है।
यदि यह महत्वपूर्ण है, तो मैं सर्वर कॉल के लिए चैनलफ़ैक्टरी कार्यान्वयन का उपयोग कर रहा हूं।
इसे पूरा करने के लिए मैं किस प्रकार के पैटर्न का उपयोग कर सकता हूं? क्या यह कुछ प्रतिक्रियाशील एक्सटेंशन मेरी मदद कर सकता है?
संपादित करें:
सही रूप में पॉल के जवाब अंकन। जबकि ReactiveUI वर्तमान में Silverlight5 के खिलाफ काम नहीं करता है, यह आरएक्स का उपयोग कर समस्या को हल करने के लिए दृष्टिकोण/संरचना चरणों को स्पष्ट रूप से रेखांकित करता है।
आरएक्स निश्चित रूप से इस का समर्थन करता है, http://rxwiki.wikidot.com/101samples#toc29 देखते हैं - कार्य –