का उपयोग कर देरी और डी-डुप्लिकेशंस मैं कुछ संदेशों को बदलने और उन्हें थोड़ी देर के बाद रिले करने के लिए प्रतिक्रियाशील एक्सटेंशन का उपयोग करना चाहता हूं।प्रतिक्रियाशील एक्सटेंशन (आरएक्स)
संदेशों कुछ इस तरह दिखाई:
- देरी की लंबाई:
class OutMsg { int GroupId { get; set; } string Content { get; set; } OutMsg(InMsg in) { GroupId = in.GroupId; Content = Transform(in.Content); // function omitted } }
आवश्यकताओं के एक जोड़े हैं:
class InMsg { int GroupId { get; set; } int Delay { get; set; } string Content { get; set; } }
उत्पादन कुछ इस तरह दिखता संदेश की सामग्री पर निर्भर है।
- प्रत्येक संदेश में समूह आईडी
- यदि एक नया संदेश उसी समूह आईडी के साथ आता है, तो देरी संदेश ट्रांसमिशन का इंतजार कर रहा है तो पहला संदेश छोड़ दिया जाना चाहिए और केवल दूसरी देरी अवधि के बाद प्रेषित किया जाना चाहिए।
को देखते हुए एक नमूदार <InMsg> और एक संदेश समारोह:
IObservable<InMsg> inMsgs = ...;
void Send(OutMsg o)
{
... // publishes transformed messages
}
मैं समझता हूँ कि मैं परिवर्तन को करने के लिए का चयन कर सकते हैं।
void SetUp()
{
inMsgs.Select(i => new OutMsg(i)).Subscribe(Send);
}
- कैसे मैं एक संदेश में देरी निर्दिष्ट आवेदन कर सकते हैं? (ध्यान दें कि संदेशों के ऑर्डर डिलीवरी के परिणामस्वरूप इसका परिणाम हो सकता है।)
- मैं उसी समूह आईडी के साथ संदेशों को कैसे डुप्लिकेट कर सकता हूं?
- क्या आरएक्स इस समस्या को हल करने में सक्षम है?
- क्या इसे हल करने का कोई और तरीका है?
मेरे पास इसके साथ एक खेल है और यह काफी कुछ नहीं करता जो मैं उम्मीद करता हूं। सब्सक्रिप्शन को "System.Collections.Generic.AnonymousObservable'1 [OutMsg]" – chillitom
लगता है जैसे आप 'स्विच' नहीं कह रहे हैं।यदि आप विजुअल स्टूडियो में "माउस ओवर" चुनते हैं तो आपको यह बताना चाहिए कि यह 'IObservable' देता है। यदि यह 'IObservable > 'देता है, तो आप स्विच नहीं कर रहे हैं –