الإطار التفاعلي لأمثلة .NET التي تثبت فائدتها [مغلقة

StackOverflow https://stackoverflow.com/questions/1756009

سؤال

كان هناك بعض الضجيج حول الجديد إطار تفاعلي في .NET 4.0. على الرغم من أنني أعتقد أنني لم أكن أتعامل مع مفهومها الأساسي ، إلا أنني لست بيعًا تمامًا ، فهذا مفيد. هل يمكنك التوصل إلى مثال جيد (يسهل فهمه في منتصف الطريق) الذي يظهر تمامًا قوة RX و NEDORNING؟ أظهر شيئًا يجعل الحياة أسهل بكثير عند الانتهاء من RX.

هل كانت مفيدة؟

المحلول

هنا هو مثال سريع. برنامج عملية السحب بطريقة إعلانية بالكامل ، باستخدام LINQ للأحداث.

   //Create an observable with the initial position and dragged points using LINQ to Events
   var mouseDragPoints = from md in e.GetMouseDown()
                           let startpos=md.EventArgs.GetPosition(e)
                           from mm in e.GetMouseMove().Until(e.GetMouseUp())
                           select new
                           {
                             StartPos = startpos,
                             CurrentPos = mm.EventArgs.GetPosition(e),
                           };

ورسم خطًا من StartPos إلى نقاط البيع الحالية

//Subscribe and draw a line from start position to current position  
            mouseDragPoints.Subscribe  
                (item =>  
                { 
                  //Draw a line from item.Startpos to item.CurrentPos
                }
                ); 

كما ترون ، لا توجد معالجات أحداث في جميع أنحاء الأماكن ، ولا متغيرات منطقية لإدارة الدولة.

إذا كنت مهتمًا بهذه الأساليب GetEventName () ، فاقترح عليك قراءة هذه المقالة بأكملها وتنزيل الكود المصدري والتشغيل معها.

اقرأها هنا ولعب مع المصدر >>

نصائح أخرى

لقد كتبت تجريبيًا خطوة بخطوة على مدونتي مؤخرًا: http://blog.andrei.rinea.ro/2013/06/01/bing-it-on-reactive-extensions-story-code-and-slides/

أنا في الأساس أقوم ببناء تطبيق صغير في WPF مع بحث RX و Bing:

enter image description here

سينتظر التطبيق حتى تتوقف عن الكتابة ثم إجراء بحث غير متزامن وتقديم النتائج. إذا كانت النتائج قبل أن تصدر بحثًا آخر ، فسيقوم تلقائيًا بإسقاط البحث الحالي.

يمكنك فرض بحث (لتخطي وقت الانتظار) بالضغط على Enter أو "Go!" الزر ويمكنه إيقاف البحث المستمر عن طريق الضغط على زر Clear. يوجد مؤشر مشغول وبعض معالجة الأخطاء (في حالة انخفاض الشبكة ، على سبيل المثال).

مواضيع رئيسية مغطاة:

  • إنشاء ملاحظات من حدث (TextChanged ، button.click etc)
  • مندوب غير متزامن (بحث غير متزامن)
  • تمديد Takeuntil
  • امتداد متميز (بما في ذلك العرف متساوي)
  • دمج التمديد
  • امتداد الخانق
  • Observeon Extension (لمزامنة مؤشر ترابط واجهة المستخدم)

.. و اكثر!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top