तो मैं आरएक्स पर पढ़ रहा हूं और इसे कठिन समय में परेशान कर रहा हूं। मेरे पास एक सिल्वरलाइट ऐप है जिसे एक विशिष्ट सेवा को असीमित रूप से 6 कॉल करने की आवश्यकता है। पुराने दिनों में, हम कॉल करने और अनुरोध के साथ प्रतिक्रिया से मेल खाने के लिए उपयोगकर्ता स्टेट/टोकन से पूछताछ करके इसे संभाल लेंगे क्योंकि उन्हें आदेश में वापस लौटने की गारंटी नहीं है। हालांकि, मुझे संदेह है कि आरएक्स इसे एक और अधिक सुरुचिपूर्ण तरीके से संभालता है। लेकिन मैं इसे काम नहीं कर सकता। यहाँ मैं अब तक राशि है ...सिल्वरलाइट और प्रतिक्रियाशील एक्सटेंशन का उपयोग करके एसिंक सेवा कॉल का प्रबंधन
myCollection.Add(new myObject(1));
myCollection.Add(new myObject(2));
myCollection.Add(new myObject(3));
myCollection.Add(new myObject(4));
myCollection.Add(new myObject(5));
myCollection.Add(new myObject(6));
foreach (var myItem in myCollection)
{
var myObservable = Observable.FromEventPattern<MyServiceMethodCompletedEventArgs>
(
f => myServiceClient.MyServiceMethodCompleted += f,
f => myServiceClient.MyServiceMethodCompleted -= f
).Take(1).ObserveOn(SynchronizationContext.Current);
myObservable.Subscribe
(
s =>
{
if (s.EventArgs.Error == null)
{
myItem.MyProperty = s.EventArgs.Result;
}
}
);
myServiceClient.MyServiceMethodAsync(myItem);
}
मुझे आशा है कि आप मुझे क्या यहाँ प्राप्त करने के लिए कोशिश कर रहा हूँ देख सकते हैं ...
क्या मैं के साथ अंत के myObject के किया जा रहा है सभी है लौटने वाले पहले कॉल के परिणाम पर सेट करें।
मुझे यकीन है कि यह कुछ मूर्खतापूर्ण है लेकिन मैं अभी तक इसे समझने में सक्षम नहीं हूं।
धन्यवाद :)
धन्यवाद! यह काम करता है और बूट करने के लिए बहुत अच्छा लग रहा है :-) मैं सोच रहा हूं कि परिणामों को यूआई थ्रेड पर वापस मार्शल करने के लिए, क्या मैं सिर्फ अनुरोध करने के लिए अंतिम पंक्ति नहीं बदल सकता। Reultult.ObserveOn (सिंक्रनाइज़ेशन कॉन्टेक्स्ट.क्यूरेंट)। सदस्यता लें (...) ? – Senkwe
हां पर ObserveOn। वैकल्पिक रूप से, यदि आप उपयुक्त सिस्टम का संदर्भ जोड़ते हैं। प्रतिक्रियाशील .??? थ्रेडिंग लाइब्रेरी, आप requestResult.ObserveOnDispatcher() का उपयोग कर सकते हैं। सदस्यता लें (...) –
ग्रेट उत्तर - जैसे जिम अप्रत्यक्ष रूप से क्वेरी सिंटैक्स का उपयोग करके दिखाता है, कुंजी अनुरोध जारी करने के लिए SelectMany का उपयोग कर रहा है –