标签: system.reactive

使用ObserveOnDispatcher对单元进行单元测试

我的视图模型中有一些代码如下:

miService.GetSomething(par1, par2)
.ObserveOnDispatcher()
.Subscribe(dt =>
 {
    DoSomething(dt);
 });
Run Code Online (Sandbox Code Playgroud)

然后在我的测试中,我"嘲笑"我的服务如下:

miService.Setup(ms => ms.GetSomething(....))
.Returns(Observable.Return(XYZ));
Run Code Online (Sandbox Code Playgroud)

问题是由于ObserveOnDispatcher,订阅委托永远不会被执行.

我见过DispatcherFrame和PushFrame的一些代码,但问题是我不知道"哪里",我可以打电话

frame.Continue = false;
Run Code Online (Sandbox Code Playgroud)

c# wpf unit-testing dispatcher system.reactive

2
推荐指数
1
解决办法
1460
查看次数

如何在MVVM ViewModel中获取Rx Observable事件流

我刚读Rx HOL NET.找到后(示例使用Windows窗体):

var moves = Observable.FromEvent<MouseEventArgs>(frm, "MouseMove");
Run Code Online (Sandbox Code Playgroud)

我想知道如何在一些WPF MVVM设置中实例化并传递对ViewModel的引用?根据我的理解,尝试在ViewModel中过滤此数据流是有意义的.

或者,如何为键盘输入TextBox做类似的事情?例如,在这种情况下,您不会将某些文本屏蔽行为附加到XAML中的控件,而是让VM中的Observer过滤并验证键盘输入.

我完全不在赛道上吗?

mvvm system.reactive observable

2
推荐指数
1
解决办法
2248
查看次数

Windows Phone Mango中的Reactive Extensions(Rx)

Reactive Extensions(Rx)是什么意思.它如何帮助我在windows phone芒果中开发应用程序?是q框架还是帮助库?这个(Rx)在WP中的有效应用程序开发中的作用是什么.芒果.任何人都可以建议我学习技术的一些链接,

c# system.reactive windows-phone-7

2
推荐指数
1
解决办法
585
查看次数

如何设置Observable的处理动作?

我知道如何创建一个observable并分配一个处理动作:

Observable.Create(o =>
{
    // o.OnNext etc.
    return Disposable.Create(() => { /* ... */ });
});
Run Code Online (Sandbox Code Playgroud)

但是现在我从查询语法中产生了一个observable:

var observable = from x in otherObservable
                 select x;
Run Code Online (Sandbox Code Playgroud)

如何为此类查询分配处理操作?

c# system.reactive observable

2
推荐指数
1
解决办法
1311
查看次数

如何阻止直到RX流中发生事件?

使用Microsoft Reavtive Extensions(RX),我想知道它是否有可能在事件发生之前被阻止?

像这样的东西:

observableStream.BlockUntilTrue(o => o.MyProperty == true);
Run Code Online (Sandbox Code Playgroud)

我尝试过的

我已经尝试过observableStream.TakeUntil(o => o.MyProperty == true);,但这会立即退出。

.net c# reactive-programming system.reactive

2
推荐指数
1
解决办法
1501
查看次数

相当于RxJava

我们可以在C#Rx中异步执行一些代码,如下所示,使用Observable.Start().我想知道RxJava中的等价物是什么.

void Main()
{
      AddTwoNumbersAsync (5,4)
      .Subscribe(x=>Console.WriteLine(x));

}
IObservable<int> AddTwoNumbersAsync(int a, int b)
{
      return Observable.Start(() => AddTwoNumbers(a, b));
}
int AddTwoNumbers(int a, int b)
{
  return a + b;
}
Run Code Online (Sandbox Code Playgroud)

c# reactive-programming system.reactive rx-java

2
推荐指数
1
解决办法
546
查看次数

如何为Reactive Extensions创建自定义扩展

不难找到如何制作自定义LINQ扩展方法的示例.但我找不到如何制作自定义Rx扩展方法的示例.

有人能指出我的资源或发布一个例子吗?我正在使用最新的(版本2.2.5).

我有兴趣制作自定义"演员"或自定义"选择".我可以反映现有扩展的源代码,但仍然不明显.

谢谢.

.net c# extension-methods system.reactive

2
推荐指数
1
解决办法
868
查看次数

ReactiveUI 7.0,ReactiveCommand,Subscribe永远不会触发?

我试图将我的头围绕在最近从6.5.2更新到7.0的reactiveUI上,并且似乎包含了一些关于ReactiveCommand的重大变化.

EG以前的工作:

在ViewModel中:

 public ReactiveCommand<Unit> DoLogin;

  ...

  DoLogin = ReactiveCommand.CreateAsyncTask(  
    async x => {
      IsBusy = true;
      await Task.Delay(2500);
      IsBusy = false;
      return Unit.Default;
    });
Run Code Online (Sandbox Code Playgroud)

在视图中:

      //bind the command
  Observable.FromEventPattern(x => loginButton.Clicked += x, x => loginButton.Clicked -= x)
      .Subscribe(args => ViewModel.DoLogin.Execute(null));

  //do something after the dologin is complete
   this.WhenAnyObservable(x => x.ViewModel.DoLogin)
      .ObserveOn(RxApp.MainThreadScheduler)
      .Subscribe( x => {
        DisplayAlert("login complete", "welcome", "OK");
      } 
     );
Run Code Online (Sandbox Code Playgroud)

但现在在activui 7.0,它是不同的,我不得不做一些改变,我无法让它正常工作:

在ViewModel中:

  public ReactiveCommand<Unit, Unit> DoLogin;
  ...
   DoLogin = ReactiveCommand.CreateFromTask(  
    async x => {
      IsBusy = …
Run Code Online (Sandbox Code Playgroud)

system.reactive reactiveui xamarin.forms

2
推荐指数
1
解决办法
776
查看次数

使用Rx下载文件(反应式编程)

目前我正在使用此代码来获取文件:

WebClient webClient = new WebClient();
webClient.DownloadProgressChanged += webClient_DownloadProgressChanged;
webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(webClient_ProgressCompleted);
Run Code Online (Sandbox Code Playgroud)

我一直在查看文档,以便弄清楚如何使用Rx转换此代码.

我开始创建一个Observable使用FromEvent以观察DownloadFileCompleted事件.

Observable.FromEvent<?>(?, ?)
Run Code Online (Sandbox Code Playgroud)

然而,我无法想象如何填补这些?.

有人能举个例子吗?

到目前为止,我已尝试过:

Observable.FromEvent<AsyncCompletedEventArgs>(?1:addHandler, ?2:removeHandler).
Run Code Online (Sandbox Code Playgroud)

然而,.NET是请求我,?1:addHandler?2:removeHandlerAction<Action<AsyncCompletedEventArgs>>(那是什么)?

.net c# system.reactive

2
推荐指数
1
解决办法
428
查看次数

使用Reactive Extensions重播带时间戳的事件流

我有以下类的项目集合:

public class Event
{
    public DateTimeOffset Timestamp;
    public object Data;
}
Run Code Online (Sandbox Code Playgroud)

我想创建IObservable<Event>Timestamp将来发布每个项目的位置.这是可能的,Observable.Delay还是我必须编写自己的IObservable<T>实现?

我会提到这个结构就像一个日志文件.可以有成千上万的Event项目,但每秒只能发布1-2项.

c# system.reactive

2
推荐指数
1
解决办法
96
查看次数