我需要从外部驱动程序(例如 USB 密钥)自动备份我的文件当插入驱动程序时。要知道何时插入新的 USB 或硬盘驱动器我使用了一个 observable,问题是我知道的唯一方法获取连接的驱动程序是通过使用以下功能:
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;. 这样,如果我重新插入相同的驱动程序,我将两次备份它,因为我不会将第三个驱动程序与第一个驱动程序进行比较(例如)。
我认为我需要的行为是 rxjs 中的成对运算符,而不是 .net 中的行为,即: 1.2;2.3;3.4;4.5;5.6;ETC
附言。抱歉,如果我不太清楚并且我的英语很差:^)
感谢您的任何回答