问题标签 [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 回答
1337 浏览

c# - 如何将 Observable.FromEvent 与静态事件一起使用?

我正在尝试使用 Reactive Extensions 编写代码来处理异步调用,其中启动方法和完成的事件都是静态的。我无法使用

因为 LanguageManager 是一个静态类而不是一个实例,所以我尝试了

但这会产生语法错误“无法将 lambda 表达式转换为类型‘对象’,因为它不是委托类型”。该事件因此被宣布

所以我认为它是一个委托类型,也许它是静态的事实会产生误导性的错误描述。

他们有什么方法可以做到这一点,还是我只需要坚持这样的非反应性代码?

0 投票
1 回答
909 浏览

system.reactive - System.IObserver 的 .NET 3.5 替身

我想将 .NET 4.0 接口 IObserver 用于需要支持以前版本的框架的库。我已经有了条件编译,可以让我为每个框架版本进行构建。

我不想使用 Rx Extensions 的版本,IObserver<T>因为这会给原本独立的程序集添加不必要的依赖项。

我正在考虑将这段代码添加到我的库中,我对你们所有人的问题是:

1)我知道这是个坏主意,但我想弄清楚,“为什么?”

我想使用标准接口,以便 .NET 4.0 用户能够以我还没有想到的很酷的方式进行集成。所以我不想只是重复这个概念并松散与其他即将出现的IObservable<T>用法的集成。

我看到的危险是,如果我的库的 .NET 3.5 版本在 .NET 4.0 中使用,可能会出现类型冲突。不过,理想情况下,使用 v4.0 的人会使用 4.0 版本的库。

使用这种方法还有什么我应该注意的吗?

2)或者,我已经考虑在我的代码中这样做(这是我倾向于的方向)并且想知道人们对为什么这是一个坏主意的想法:

后来我想在哪里使用它:

有什么想法吗?

0 投票
2 回答
1104 浏览

c# - 在 Rx.Net 上迫切需要帮助

大家好,我对 Rx 非常非常非常陌生,并试图组合一个简单的测试应用程序。它基本上使用 Rx 订阅窗口单击事件,并将文本框上的文本设置为“已单击”。这是一个 wpf 应用程序。这是xml:

这是背后的代码:

但由于某种原因,代码没有运行。我得到消息:

对匹配指定绑定约束的“Reactive.MainWindow”类型的构造函数的调用引发了异常。行号'3'和行位置'9

内部异常消息:

事件委托的形式必须为 void Handler(object, T) 其中 T : EventArgs。

请帮忙!!!

0 投票
2 回答
11316 浏览

.net - 为什么 Windows\Assembly 中可能缺少 System.Threading.dll?

我在运行 XP Professional 的远程计算机上安装了各种版本的 .NET Framework(版本 1.1 到 4.0)。我也安装了 Reactive Extension 以获得良好的效果。

我还有一个可以在我的机器上运行的应用程序,因为它引用了此处的 System.Threading:C:\Program Files\Microsoft Reactive Extensions\redist\desktopV2\System.Threading.dll

我在 GAC 中也有两个版本的 DLL。

两个问题:

i) 为什么当我从列表中选择而不是浏览到文件时,Visual Studio 决定这是要引用的版本(实例)?

ii) 为什么远程机器上不存在 System.Threading?(我认为这是框架的核心部分)

谢谢

0 投票
1 回答
898 浏览

unity-container - 统一使用 IObservable

我想使用 iobservable 模式来公开事件流。问题是我使用统一来创建观察者和事件生成器。我宁愿不必在应用程序启动时更新这两个,这样我就可以开始监听事件。有人对此有什么建议吗?

0 投票
3 回答
2384 浏览

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

我只是在阅读 Rx HOL NET。找到后(示例使用 Windows 窗体):

我想知道如何在某些 WPF MVVM 设置中实例化并将移动的引用传递给 ViewModel?据我了解,尝试在 ViewModel 中过滤此数据流确实很有意义。

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

我完全偏离轨道了吗?

0 投票
2 回答
12390 浏览

c# - Rx - 取消订阅事件

我有一个 INotifyPropertyChanged 对象 Foo。我使用 Rx 的 FromEvent 方法将 Foo 转换为可观察的事件流:

现在我想听一个特定的属性改变了,如果.Progress == 100,取消订阅:

当 Progress == 100 时如何取消订阅?如果我在 .Where 子句之后添加一个 .Take(1) 调用,那会自动取消订阅吗?

0 投票
1 回答
373 浏览

.net - 使用响应式扩展来保留一系列事件中的最新事件,直到收到最新事件后 x 秒

我试图了解如何使用响应式扩展来实现以下场景。我一直在研究的其他解决方案涉及管理一系列计时器……如果可能的话,我希望避免这种情况。

场景
发生“ActionRequests”流。ActionRequest 的流入来自不同的对象源。一旦请求停止从特定来源传入 x 秒,我只对挑选最新的 ActionRequest 感兴趣

所以打破它。

  • 不断地从不同的对象源接收事件。
  • 不同的对象源由 guid 表示 - 请参阅 ActionRequests 类
  • 在对象源沉默 x 秒后,最新事件被推出。
  • 接收到最近的感兴趣的 ActionRequest 后,可以丢弃较旧的消息

    对此的任何想法将不胜感激。

  • 0 投票
    1 回答
    292 浏览

    c# - 可以使用响应式框架重构此代码吗?

    将以下代码复制粘贴到新的 C# 控制台应用程序中。

    2 线程 (A,B)

    一个线程可以一次提供一个实例并调用Set方法B线程想要接收一系列实例(由线程A提供)

    所以从字面上将 Add(item), Add(item), .. 转换为不同线程之间的 IEnumerable

    当然也欢迎其他解决方案!

    0 投票
    3 回答
    3540 浏览

    .net - 反应式扩展:节流/样本与不同的时间间隔

    我有一个IObservable以随机间隔产生值的,我想限制这个序列。我发现的一件事是Throttle运营商对“节流”的定义与我的不同。

    Throttle仅在指定的时间间隔过后才产生值它产生最后看到的值)。我认为节流意味着在指定的时间间隔内产生值(当然,除非有沉默)。

    说,我希望Observable.Interval(100).Select((_,i) => i).Throttle(200)产生(以任何性能/时序问题为模)偶数,因为我将其限制为“半速”。然而,这个序列根本没有产生任何价值,因为从来没有一段长度为 200 的静默期。

    所以,我发现这Sample实际上是我想要的“节流”行为。Observable.Interval(100).Select((_,i) => i).Sample(200)产生(再次以任何性能/时序问题为模)偶数序列。

    但是,我还有另一个问题:间隔会有所不同,具体取决于最后一个“采样”值。我想要的是编写一个如下所示的运算符:

    intervalSelector参数产生下一个样本的间隔,第一个样本......要么取自第一个值,要么取自附加参数,我不在乎。

    我试着写这个,但我最终得到了一个大而复杂的结构,它不能很好地工作。我的问题是,我可以使用现有的运营商(也就是单线)来构建它吗?