2011-06-26 12 views
29

मैं प्लुरलसाइट पर दान सुलिवान के आरएक्स एक्सटेंशन प्रशिक्षण पाठ्यक्रम के माध्यम से काम करने की कोशिश कर रहा हूं। यह बहुत अच्छी चीजें है लेकिन दुर्भाग्य से आरएक्स पहले ही बदल चुका है, भले ही पाठ्यक्रम केवल एक महीने पहले प्रकाशित हुआ था।.NET के लिए आरएक्स - शेड्यूलर के साथ क्या हुआ। डिस्पैचर?

अधिकांश परिवर्तन काम करने के लिए तुच्छ हैं (तीन डीएलएस से एक डीएल में बदलते हैं, नामस्थानों में बदलते हैं आदि) लेकिन मैं यह समझने के लिए संघर्ष कर रहा हूं कि मुझे शेड्यूलर के स्थान पर क्या उपयोग करना चाहिए। डैन के उदाहरण में डिस्पैचर। मैं शेड्यूलर में उपलब्ध संपत्तियों में कुछ भी स्पष्ट नहीं देख सकता।

यहाँ कोड मैं (पुनर्संशोधित?) आरएक्स लाइब्रेरी के साथ काम करने के लिए कोशिश कर रहा हूँ (वर्तमान में स्थिर संस्करण v1.0.10605)

var query = from number in Enumerable.Range(1, 25) select StringWait(number.ToString()); 
var observableQuery = query.ToObservable(Scheduler.ThreadPool); 
observableQuery.ObserveOn(Scheduler**.Dispatcher**).Subscribe(n => Results.AppendText(string.Format("{0}\n", n))); 

क्या मैं ऑब्जर्वर कोड आह्वान करने के लिए उपयोग करना चाहिए (परिणाम है एपेंडटेक्स्ट) मूल डिस्पैचर थ्रेड पर?

उत्तर

41

DispatcherSchedulerSystem.Reactive.Windows.Threading असेंबली में स्थानांतरित कर दिया गया है। यदि आप NuGet का उपयोग कर रहे हैं, तो यह Rx-WPF

+0

धन्यवाद। मेरे पास उस डीएलएल का संदर्भ है लेकिन यह समझने के लिए संघर्ष कर रहा हूं कि उपर्युक्त क्वेरी में "ObserveOn" विधि को प्रतिस्थापित करने के लिए मुझे क्या उपयोग करना चाहिए। मैं एक डिस्पैचरशेड्यूलर का संदर्भ दे सकता हूं लेकिन कॉल करने के लिए इसकी कोई सदस्यता विधि नहीं है। – irascian

+5

आप इसे 'ObserveOnDispatcher()' में बदल सकते हैं, जो 'System.Reactive.Windows.Threading' असेंबली में परिभाषित एक विस्तार विधि है। –

+0

गोटो! धन्यवाद। तो मेरी आखिरी पंक्ति अवलोकन योग्य हो जाती है। ObserveOnDispatcher()। सदस्यता लें (n => results.AppendText (string.Format ("{0} \ n", n))); – irascian

1

2016-11-25 के अनुसार, संदर्भ RX-XAML है।

दुर्भाग्यवश, माइक्रोसॉफ्ट ने आरएक्स v3.2.0 के पक्ष में आरएक्स v2.2.5 को विस्थापित कर दिया, जो पूरी तरह से पार मंच है। हालांकि, क्रॉस प्लेटफार्म पुस्तकालय WPF का समर्थन नहीं करते हैं। इसका मतलब है कि अब NuGet पैकेज को ढूंढना मुश्किल है जो WPF के साथ काम करता है।

यदि आप WPF + .NET 4.5 का उपयोग कर रहे हैं, तो RX-XAML पर निर्भरता के साथ किसी भी NuGet पैकेज को स्थापित करें। उदाहरण के लिए, reactiveui-blendRX-XAML v2.2.5 पर निर्भर करता है, तो यह अब काम करेंगे:

setClipboard.ObserveOnDispatcher().Subscribe(o => 
{ 
    ... 
}); 
+1

वीएस के भीतर पैकेज प्रबंधक कंसोल से 'इंस्टॉल-पैकेज Rx-Xaml -Version 2.2.5' चलाने के लिए मेरे लिए आसान है। –

+0

अच्छा! यह आसान लगता है, मैं अब से इसका उपयोग करूंगा। – Contango

संबंधित मुद्दे