Pergunta

EDITAR:Obrigado pelo link para o wiki, acho que como já começou lá, é mais fácil ir lá para conferir.No entanto, a pergunta aqui também é boa, para que as pessoas que não estão nos fóruns do MSDN conheçam o wiki e onde ele está.

Pergunta curta:

Você tem um exemplo de código Rx que pode ajudar as pessoas a entendê-lo melhor?

Longa divagação com pergunta oculta:

Agora que o Estrutura Rx foi lançado, acho que muitos de nós estamos interessados ​​em obter os bits e testá-los.Infelizmente, não existem muitos exemplos por aí (depois de uma pesquisa exaustiva, estou quase convencido de que o Rx foi criado apenas para arrastar facilmente em aplicativos wpf).

Não me lembro exatamente onde li ou ouvi (tenho visto muitos blogs e vídeos) que a equipe Rx parece estar interessada em fazer a série 101... quando tiver tempo suficiente para fazê-lo ...o que é muito ruim para quem quer entendê-lo e brincar com ele agora (e quero dizer, que desenvolvedor respeitado não se sente como uma criança com um brinquedo novo quando uma nova tecnologia.assim surge).

Pessoalmente, estou tentando agora, mas uau, existem alguns conceitos malucos nisso ...apenas para ter nomes de métodos como Materializar e Fecho eclair me faz pensar Teletransportadores e coisas de De volta para o Futuro.

Então, acho que seria legal se quem tem maior entendimento ajudasse a construir uma coleção de exemplos, ala 101 exemplos de Linq que vai desde o uso básico até coisas mais complexas, e cobre praticamente todos os métodos e seu uso, de uma forma prática (talvez com um pouco de teoria também, especialmente porque esse tipo de conceito provavelmente exigia isso)

Acho ótimo que os desenvolvedores de MS reservem um tempo para nos fornecer material como esse, mas também acho que esta comunidade é boa o suficiente para começar a construir nosso próprio material, não é?

Foi útil?

Solução

Na verdade, tive pensamentos semelhantes alguns dias atrás.Começamos nosso próprio "101 Rx Samples" como uma postagem no fórum Rx MSDN, mas desde então o movemos para um formato Wiki.Fique à vontade para vir e adicionar suas próprias amostras!

101 amostras Rx no wiki Rx

Outras dicas

Para começar - Aqui está um aplicativo de desenho simples, de modo que quando o usuário arrasta, desenhe uma linha vermelha da posição inicial do mouse até o local atual, e também um ponto azul no local atual.Este é o resultado do meu hack da semana passada no Rx

A WPF Drawing Demo

E aqui está o código fonte.

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

Leia minha postagem com mais explicações aqui e Baixe o código fonte aqui

Espero que isto ajude

Outro recurso útil pode ser o Extensões reativas (Rx) Koans: 55 exemplos progressivos para ajudá-lo a aprender Rx

eu estou lendo http://www.introtorx.com, que como o nome sugere parece ser uma introdução concisa.Parece haver muitos exemplos (muito básicos), passo a passo, principalmente usando o console para imprimir coisas.

Aqui está minha variação do amostra de arrastar e soltar de Wes Dyer, para Windows Forms (eu faria do EnableDragging um método de extensão, provavelmente):

    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));
    }  

Um pouco tarde, mas se alguém novo se deparar com esta questão, http://rxmarbles.com/ fornece uma maneira muito boa de visualizar os operadores.

E um Visualizador de ações exemplo no Githubenter image description here

  1. StreamProvider extrai dados de um servidor e gera um fluxo Rx.NET IObservable.
  2. StreamAggregator agrega todos os fluxos IObservable e duplica o resultado em um thread de processamento central.
  3. As visualizações filtram o fluxo único e duplicam o resultado em seus próprios threads para exibição.

Todos os StreamProviders, StreamAggregate e Views são executados em seus próprios threads.Este também é um modelo típico de threading de aplicações de visualização de ações do mundo real.

Este exemplo também pode ser um esqueleto de teste de desempenho simples para WPF DataGrid.Ele calcula ticks/segundo processado e os exibe na Visualização.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top