我需要在插入驱动程序时自动从外部驱动程序(例如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
请参阅"计数重叠缓冲区"部分。