मैं इस वापसी प्रकार के साथ एक विधि है:async enumerables को कैसे सम्मिलित करें?
public async Task<IEnumerable<T>> GetAll()
यह कुछ आगे async कॉल (अज्ञात नंबर), जिनमें से प्रत्येक गणनीय टी के एक कार्य वापसी बनाता है, और फिर वापसी के लिए परिणाम concat करना चाहता है।
var data1 = src1.GetAll();
var data2 = src2.GetAll();
var data3 = src3.GetAll(); //and so on
अब यह काफी आसान सभी का इंतजार करने के लिए और परिणाम concat एकल गणनीय निर्माण करने के लिए, लेकिन मैं चाहता हूँ गणनीय फोन करने वाले/प्रगणक के लिए संभावित प्रतीक्षा करता है के साथ, जैसे ही पहली कॉल रिटर्न के रूप में उपलब्ध होने की यदि उपलब्ध परिणाम समाप्त होने पर कोई कॉल अभी भी लंबित है।
क्या मुझे <> किसी कार्य में लपेटने पर गणनाकर्ता समर्थन की कमी के आसपास काम करना है, इसके लिए मुझे एक कॉन्सैट सौंपना है? या टीपीएल या अन्य जगहों पर पहले से ही एक पुस्तकालय कॉल है जो मेरी मदद कर सकता है। मैंने आईएक्स को देखा, लेकिन यह अभी भी प्रयोगात्मक रिलीज पर है और इसे फोल्ड नहीं करना चाहते हैं।
एक तरफ नोट पर, क्या मैं एक विरोधी पैटर्न की कोशिश कर रहा हूं? मैं एक जटिलता, अपवाद हैंडलिंग के बारे में सोच सकता हूं - कॉलर की तरफ से, कॉल सफलतापूर्वक पूरा हो सकता है और वह गणना करने के लिए शुरू कर देता है लेकिन यह उस माध्यम से मिडवे उड़ सकता है ...
(एक साइड नोट के रूप में) आपका पैटर्न असममित प्रतीत होता है: कोड पहले अनुक्रम के लिए तैयार है, लेकिन बाकी के लिए इंतजार नहीं करता है। – Vlad
शायद आपको वास्तव में 'IObservable' की आवश्यकता है? उस स्थिति में आप केवल ['Observable.Concat'] (https://msdn.microsoft.com/en-us/library/system.reactive.linq.observable.concat%28v=vs.103%29.aspx का उपयोग कर सकते हैं)। –
Vlad
@Vlad: अच्छा बिंदु। मैंने इसके बारे में सोचा जब मैंने आईएक्स/आरएक्स में देखा और मैं सहमत हूं, इस प्रकार के उपयोग के मामले में प्रतिक्रियाशील प्रतिक्रियाशील होती है। लेकिन समग्र परिदृश्य और अनुप्रयोग एक पुल आधारित है और मैं आरएक्स हथौड़ा में केवल अवलोकन योग्य परिणाम से गणना करने के लिए नहीं छोड़ना चाहता हूं। – Vivek