c# - 如果 Rx 触发另一个事件,则忽略事件

标签 c# .net linq event-handling system.reactive

简而言之

寻找实现的方法

observableOne.SkipIf(observableTwoFiresWithinPeriod)

说明

  • 假设我正在观察人们走过一扇门 ( walkins Observable )
  • 而且我还有办法判断他们是否有手机 ( phoneWalkins Observable )。
  • 现在我想观察另一部分不带电话走进门的人 ( nonPhoneWalkins Observable )

鉴于我有walkinsphoneWalkins然后我可以将子集作为流使用 nonPhoneWalkins应该是walkins除了phoneWalkins .

  • 如何使用响应式扩展来实现这一点?
  • 请注意phoneWalkins walkins 之后发出信号如果发现此人携带手机

最佳答案

这是我的简单尝试:

public class Program
    {
        static void Main()
        {
            // all walkins
            var walkins =
                // all persons through a door each second
                Observable.Interval(TimeSpan.FromSeconds(1), Scheduler.CurrentThread)
                // if has phone (is even) then true, if not false
                .Select(i => (i % 2 == 0));

            var phoneWalkins = // substream of phoneWalkins (if you want it separate)
                walkins
                .Where(i => (i == true))
                .Select(i => i);

            var nonPhoneWalkins = // substream of nonPhoneWalkins (if want it separate)
                walkins
                .Where(i => (i == false))
                .Select(i => i);

            //walkins.Subscribe(Console.WriteLine); // output all
            phoneWalkins.Subscribe(Console.WriteLine); // output phone
            //nonPhoneWalkins.Subscribe(Console.WriteLine); // output nonPhone
        }
    }

关于c# - 如果 Rx 触发另一个事件,则忽略事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36258754/

相关文章:

c# - 在 .net 4.0 版本上找不到 System.Web 程序集

.net - 如何使代码合约与数据合约的反序列化一起工作?

c# - Sql to Linq 难点——group by, having

c# - 为字段填充返回 SQL DataRow 的正确方法

c# - 如何将导航属性名称更改为有意义的名称

c# - Caliburn.Micro - 我可以处理一个 Action 但继续将它发送到可视化树上吗?

c# - Entity Framework 复杂类型的列命名约定

c# - "Reference the package directly from the project to resolve this issue."

c# - LINQ中 `is`和 `as`的性能差异

c# - Linq投影问题