问题标签 [system.reactive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
573 浏览

c# - 如何将接受 OnError 和 OnCompleted 的方法转换为 Observable

对此可能有一个非常简单的答案,但我的大脑无法正常工作。

我有一个方法需要在一个不支持 Observable 的框架中调用,它具有以下模式。

我需要将其转换为等待结果的同步操作。我认为 Rx 会帮助我,所以我尝试了

但是这里只是死锁,我试着让它 ObserveOn 新线程和 SubscribeOn 新线程。但它仍然陷入僵局,我是否走在正确的轨道上?

0 投票
2 回答
1681 浏览

c# - 使用 FromAsyncPattern 进行单元测试

反应式扩展有一个性感的小钩子来简化调用异步方法:

我在 WPF 项目中使用它,它在运行时效果很好。

不幸的是,在尝试对使用这种技术的方法进行单元测试时,我遇到了随机失败。包含此代码的测试的每五次执行中约有 3 次失败。

这是一个示例测试(使用 Rhino/unity 自动模拟容器实现):

我看到的问题是,我指定在异步操作完成时运行的代码(在本例中为 Foo(x))从未被调用。我可以通过在 Foo 中设置断点并观察它们永远不会到达来验证这一点。此外,我可以在调用 DoMethodThatInvokesService (启动异步调用)后强制长时间延迟,并且代码仍然永远不会运行。我知道调用 Rx 框架的代码行被调用了。

我尝试过的其他事情:

这将我的失败率提高到五分之一,但它们仍然发生。

  • 我已经重写了 Rx 代码以使用普通的 jane Async 模式。这行得通,但是我的开发者自我真的很想使用 Rx 而不是无聊的旧开始/结束。

最后,我确实有一个解决方法(即不要使用 Rx),但是我觉得它并不理想。如果有人过去遇到过这个问题并找到了解决方案,我非常乐意听到它。

更新

我还在Rx 论坛上发帖,他们将在即将发布的版本中包含一个测试调度程序。一旦可用,这可能是最终的解决方案。

0 投票
2 回答
4427 浏览

c#-4.0 - 如何将 IObservable/IObserver 与 ConcurrentQueue 或 ConcurrentStack 一起使用

我意识到,当我尝试使用多个线程处理并发队列中的项目而多个线程可以将项目放入其中时,理想的解决方案是将 Reactive Extensions 与 Concurrent 数据结构一起使用。

我原来的问题是:

在使用 ConcurrentQueue 时,尝试在并行循环时出队

所以我很好奇是否有任何方法可以让 LINQ(或 PLINQ)查询随着项目的放入而不断出队。

我试图让它以这样一种方式工作,即我可以让 n 个生产者推入队列并处理有限数量的线程,这样我就不会使数据库过载。

如果我可以使用 Rx 框架,那么我希望我可以启动它,如果在 100 毫秒内放入 100 个项目,那么作为 PLINQ 查询一部分的 20 个线程将通过队列进行处理。

我正在尝试使用三种技术:

  1. Rx 框架(反应式 LINQ)
  2. PLING
  3. System.Collections.Concurrent 结构
0 投票
1 回答
1314 浏览

c# - 反应式扩展内存使用情况

我在使用 Reactive Extensions for .NET 的 WPF 应用程序中有以下代码:

当鼠标在此对话框上移动时,内存是否会稳定增加?

阅读代码,我希望 moveEvents observable 会在一段时间后包含大量的 MouseEventArgs?或者这是以我不知道的某种聪明的方式处理的?

0 投票
1 回答
116 浏览

.net - Is it possible to run Silverlight code using the runtime of the full .NET framework?

To integrate with the current system for continuous integration, we want to use NUnit for testing (non UI) Silverlight code. Doing this means executing Silverlight code using the runtime of the full .NET framework which usually works just fine as long as not actually using Silverlight specific classes such as the visual elements or DependencyObject. However, some general purpose libraries such as the Reactive Extensions for Silverlight also appears to have a dependency on the Silverlight runtime (agcore).

Is there a way of tricking the runtime into redirecting Silverlight runtime dependencies into some mock version of them? Or is it possible to redirect assembly references such as Reactive Extensions at runtime altogether (when running unit tests only) and load their corresponding counterpart for the full .NET framework instead?

0 投票
1 回答
280 浏览

c#-4.0 - linq 语法如何在 Rx 框架中的 IQueryable 接口上工作

我已经开始研究反应式框架。非常好的东西。但是在查看代码示例时,我感到很困惑。linq 语法适用于 IQueryable。我认为 linq 只适用于 IEnumerable。C# 编译器的 linq 到扩展方法转换的基础是什么?它是否需要一组具有特定接口的方法?

0 投票
1 回答
442 浏览

c# - 如何在 Reactive Framework 流中组合中间事件?

我对 Rx 还是很陌生,很难弄清楚如何表达这个(看似)简单的订阅。我正在寻找这样的东西:

  1. 开始: InTransaction.Where(inTransaction => inTransaction)
  2. 如果:ItemChanged 或 On FlagChanged,让 Changed = true
  3. 结束: InTransaction.Where(inTransaction => !inTransaction)

以上都是可观察的。因此,在交易开始时,我想开始关注更改通知,无论有多少进来,我只想记住已经收到任何通知。当事务结束时,我想调用我的处理程序来更新视觉状态。

网上有很多有趣的例子展示了如何为鼠标拖动执行此操作。我遇到的唯一问题是我不想获得每一个更改的事件。我想知道在交易结束之前是否有任何被击中。

谁能帮我指出正确的轨道?

更新:我当前的算法看起来像这样:

工作正常,但我想知道我是否可以通过一次订阅来摆脱困境。

0 投票
1 回答
380 浏览

.net - 从 Reactive Extensions (Rx) 中的不同线程触发 OnNext 是否粗鲁?

当您自己实现 IObserver 时,您知道如何处理从不同线程同时或顺序调用 OnNext 的情况,但是当涉及到这一点时,内置的 Reactive Extension 原语的期望是什么?例如,BufferWithTime 能否应对从多个线程调用的 OnNext?从多个线程同时调用?

0 投票
1 回答
714 浏览

.net - 帮助使用响应式扩展库中的主题类

我正在尝试使用一对主题类来触发 2 组事件序列。该应用程序是一个绘图应用程序,其中一个主体在用户单击时触发 onNext,而另一个主体在用户双击时触发 OnNext。我已经编写了 GetClick 和 GetDoubleClick 方法,它们为上述情况返回一个 observable 并且似乎工作正常。下面代码中的问题是,如果在第一个触发点击序列的主题上调用 onNext,双击 observable 永远不会被调用。如果我注释掉第一个主题的 onNext 调用,双击 observable 确实会按预期触发。任何人都可以看看下面的代码和他们的想法/想法吗?我在下面的问题代码行中添加了注释

另外,我不太确定 Hide() 是做什么的。我只是在使用它,因为所有示例似乎都有 em。隐藏身份的真正含义是什么?

0 投票
2 回答
9054 浏览

c# - 使用 Reactive Extensions (Rx) 进行套接字编程实用吗?

GetMessages用 Rx编写函数的最简洁的方法是什么:

一个简单的服务器作为上述示例的驱动程序:http: //gist.github.com/452893#file_program.cs

关于使用 Rx 进行套接字编程

我一直在研究使用Reactive Extensions进行我正在做的一些套接字编程工作。我这样做的动机是它会以某种方式使代码“更简单”。这是否意味着更少的代码,更少的嵌套。

然而到目前为止,情况似乎并非如此:

  1. 我还没有找到很多将 Rx 与套接字一起使用的示例
  2. 我发现的示例似乎并不比我现有的 BeginXXXX、EndXXXX 代码复杂
  3. 虽然ObservableFromAsyncPattern的扩展方法,但这不包括SocketEventArgsAsync API。

当前非工作解决方案

这是我到目前为止所拥有的。这不起作用,它因堆栈溢出而失败(呵呵)我还没有弄清楚语义,以便我可以创建一个IObservable将读取指定字节数的。