在rx.net中使用.buffer的成对操作员



我需要在插入驱动程序时自动从外部驱动程序(例如USB键)备份文件。要知道何时插入新的USB或硬盘驱动器,我使用了可观察到的可观察到的问题是,我知道获得连接驱动程序的唯一方法是使用该函数:

DriveInfo.GetDrives();

返回包含每个链接驱动程序的列表:我实现了此功能,以了解何时连接新的质量内存:

       public static IObservable<DriveInfo> ObserveNewDrivers() =>
        Observable.Interval(TimeSpan.FromSeconds(5))
            .Select(_ => DriveInfo
                .GetDrives())
            .DistinctUntilChanged()
            .Buffer(2)
            .SelectMany(buff => buff.Aggregate(
                (a, b) => b.Except(a).ToArray()));

它不起作用,因为我只比较两对两个驱动程序(使用"非"函数")数值示例:1,2;3.4;5.6; 。这样,如果我重新插入相同的驱动程序,我将两次备份它,因为我不将第三个驱动程序与第一个驱动器进行比较(例如)。

我认为我需要的行为是RXJ中的成对操作员,但不在.net IE中: 1.2;2.3;3.4;4.5;5.6;等

ps。对不起,如果我不太清楚我的英语不太清楚:^)

感谢您的任何答案

.NET中的缓冲区具有一个带有2个参数的构造函数,该参数允许您进行'重叠'缓冲区。

如果我对您遇到的问题的理解是正确的,您将要使用:

.Buffer(2, 1)

这意味着每1个新值都会发出两个值。更多信息在这里:

http://www.introtorx.com/content/v1.0.10621.0/13_timeshiftedsepences.html#buffer

请参阅"计数重叠缓冲区"部分。

相关内容

  • 没有找到相关文章

最新更新