मैं IObservable<bool>
बनाने की कोशिश कर रहा हूं जो true
लौटाता है यदि पिछले 5 सेकंड में यूडीपी संदेश प्राप्त हुआ है और यदि कोई टाइमआउट होता है, तो झूठा वापस आ जाता है।प्रतिक्रियाशील एक्सटेंशन टाइमआउट जो अनुक्रम को रोकता नहीं है?
अब तक मैं इस है:
public IObservable<Boolean> GettingUDPMessages(IPEndPoint localEP)
{
var udp = BaseComms.UDPBaseStringListener(localEP)
.Where(msg => msg.Data.Contains("running"))
.Select(s => true);
return Observable
.Timeout(udp, TimeSpan.FromSeconds(5))
.Catch(Observable.Return(false));
}
इस के साथ मुद्दे हैं: -
- एक बार एक झूठी दिया जाता है, अनुक्रम बंद हो जाता है
- मैं केवल वास्तव में
true
याfalse
पर की जरूरत है राज्य परिवर्तन
मैं एक Subject<T>
इस्तेमाल कर सकते हैं, लेकिन मैं UDPBaseStringListener
नमूदार के निपटान के लिए जब वहाँ कोई और अधिक ग्राहक हैं सावधान रहने की जरूरत है।
अद्यतन
हर बार जब मैं एक यूडीपी संदेश मिलता है कि मैं यह एक true
वापसी करना चाहते हैं। अगर मुझे पिछले 5 सेकंड में यूडीपी संदेश नहीं मिला है, तो मैं इसे false
वापस करना चाहता हूं।
FYI करें, 'Timeout' एक अधिभार है कि जब समय के लिए एक वैकल्पिक नमूदार लेता है टाइमआउट "फेंकने" की बजाय होता है और 'कैच' की आवश्यकता होती है। –
पाठकों को भी रुचि हो सकती है [1] (http://stackoverflow.com/q/23394441/1267663), [2] (http://stackoverflow.com/q/12786901/1267663), और [3] (http://stackoverflow.com/q/35873244/1267663)। – Whymarrh