Вопрос

РЕДАКТИРОВАТЬ:Спасибо за ссылку на вики, думаю, раз уж там это уже началось, то проще зайти туда и проверить.Однако вопрос здесь тоже хороший, поэтому люди, которые не посещают форумы msdn, узнают о вики и о том, где она находится.

Короткий вопрос:

Есть ли у вас образец кода Rx, который поможет людям лучше его понять?

Длинный бред со скрытым вопросом:

Теперь, когда Рамочная программа Rx был выпущен, я думаю, что многие из нас заинтересованы в том, чтобы получить эти фрагменты и опробовать их.К сожалению, примеров на самом деле не так много (после исчерпывающего поиска я почти убедился, что Rx предназначен только для простого перетаскивания в приложениях wpf).

Я не могу точно вспомнить, где я прочитал или услышал (я просматривал множество блогов и видео), что команда Rx, похоже, заинтересована в создании серии 101... когда у них будет достаточно времени для этого. ...что в значительной степени отстойно для тех, кто хочет понять это и поиграть с этим сейчас (и я имею в виду, какой уважающий себя разработчик не чувствует себя ребенком с новой игрушкой, когда появляется новая технология.вот такое получается).

Я лично сейчас попробовал, но ух ты, в этом есть какие-то сумасшедшие концепции...просто чтобы иметь имена методов, например Материализовать и Почтовый индекс заставляет меня думать о Телепортеры и прочее из Назад в будущее.

Итак, я думаю, было бы неплохо, если бы те, у кого больше понимания, помогли собрать коллекцию примеров, аля. 101 пример Linq это идет от базового использования к более сложным вещам и в значительной степени охватывает все методы и их использование на практике (возможно, с небольшим количеством теории, особенно потому, что такого рода концепции, вероятно, этого требуют)

Я думаю, это здорово, что разработчики MS находят время, чтобы предоставить нам такой материал, но я также думаю, что это сообщество достаточно хорошее, чтобы начать создавать наши собственные материалы, не так ли?

Это было полезно?

Решение

На самом деле, пару дней назад у меня были подобные мысли.Мы начали свой собственный «101 образец Rx» как публикацию на форуме Rx MSDN, но с тех пор перевели его в формат Wiki.Пожалуйста, не стесняйтесь прийти и добавить свои собственные образцы!

101 образец Rx на вики Rx

Другие советы

Для начала — вот простое приложение для рисования, в котором, когда пользователь перетаскивает, мы рисуем красную линию от исходного положения мыши до текущего местоположения, а также синюю точку в текущем месте.Это результат моего взлома Rx на прошлой неделе.

A WPF Drawing Demo

И вот исходный код.

//A draw on drag method to perform the draw
void DrawOnDrag(Canvas e)
        {

            //Get 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),
                                  };


            //Subscribe and draw a line from start position to current position
            mouseDragPoints.Subscribe
                (item =>
                {
                    e.Children.Add(new Line()
                    {
                        Stroke = Brushes.Red,
                        X1 = item.StartPos.X,
                        X2 = item.CurrentPos.X,
                        Y1 = item.StartPos.Y,
                        Y2 = item.CurrentPos.Y
                    });

                    var ellipse = new Ellipse()
                    {
                        Stroke = Brushes.Blue,
                        StrokeThickness = 10,
                        Fill = Brushes.Blue
                    };
                    Canvas.SetLeft(ellipse, item.CurrentPos.X);
                    Canvas.SetTop(ellipse, item.CurrentPos.Y);
                    e.Children.Add(ellipse);
                }
                );
        }

Прочитайте мой пост с дальнейшими объяснениями здесь и Загрузите исходный код здесь

Надеюсь это поможет

Еще одним полезным ресурсом может стать Реактивные расширения (Rx) Коанс: 55 прогрессивных примеров, которые помогут вам выучить Rx

я читаю http://www.introtorx.com, который, как следует из названия, представляет собой краткое введение.Кажется, существует довольно много (очень простых) примеров, пошаговых, в основном с использованием консоли для распечатки.

Вот моя вариация на тему образец перетаскивания Уэса Дайера, для Windows Forms (вероятно, я бы сделал EnableDragged методом расширения):

    public Form2()
    {
        InitializeComponent();

        EnableDragging(pictureBox1);
        EnableDragging(button1);
        EnableDragging(this);
    }

    private void EnableDragging(Control c)
    {
        // Long way, but strongly typed.
        var downs = from down in Observable.FromEvent<MouseEventHandler, MouseEventArgs>(
                        eh => new MouseEventHandler(eh), 
                        eh => c.MouseDown += eh,  
                        eh => c.MouseDown -= eh)
                    select new { down.EventArgs.X, down.EventArgs.Y };

        // Short way.
        var moves = from move in Observable.FromEvent<MouseEventArgs>(c, "MouseMove")
                    select new { move.EventArgs.X, move.EventArgs.Y };

        var ups = Observable.FromEvent<MouseEventArgs>(c, "MouseUp");

        var drags = from down in downs
                    from move in moves.TakeUntil(ups)
                    select new Point { X = move.X - down.X, Y = move.Y - down.Y };

        drags.Subscribe(drag => c.SetBounds(c.Location.X + drag.X, c.Location.Y + drag.Y, 0, 0, BoundsSpecified.Location));
    }  

Немного поздно, но если кто-то новый наткнется на этот вопрос, http://rxmarbles.com/ предоставляет очень хороший способ визуализации операторов.

И Просмотрщик акций пример на Гитхабеenter image description here

  1. StreamProvider извлекает данные с сервера и генерирует поток Rx.NET IObservable.
  2. StreamAggregator объединяет все потоки IObservable и дублирует результат в центральный поток обработки.
  3. Представления фильтруют один поток и дублируют результат в свои потоки для отображения.

Все StreamProviders, StreamAggregate и Views выполняются в своих собственных потоках.Это также типичная потоковая модель реальных приложений для просмотра акций.

Этот пример также может представлять собой простой скелет теста производительности для WPF DataGrid.Он подсчитывает количество обработанных тиков в секунду и отображает их в представлении.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top