/// <summary> /// 监控任务 /// </summary> public void WatcherTask() { USBDictionary.Get(); Task.Factory.StartNew(() => { Refresh();//第一次运行初始化USB列表 while (!Token.IsCancellationRequested) { if (HasEvent) { try { Refresh(); //USB设备发生改变触发事件 if (Ls.Ok(InsertDevice) || Ls.Ok(RemoveDevice)) { USBChangeEvent?.Invoke(AllDevice, InsertDevice, RemoveDevice); __ChangeTime = DateTime.Now; } //对插入事件做处理 if (ListTool.HasElements(InsertDevice)) { USBInsertEvent?.Invoke(AllDevice, InsertDevice); __InsertTime = DateTime.Now; } //对移除设备事件做处理 if (ListTool.HasElements(RemoveDevice)) { USBRemoveEvent?.Invoke(AllDevice, RemoveDevice); __RemoveTime = DateTime.Now; } } catch { } HasEvent = false; } Sleep.S(1); } }); }
/// <summary> /// 刷新 USB 磁盘列表信息 /// </summary> public void Refresh() { if ((DateTime.Now - __RefreshTime).TotalSeconds > 1) { __InsertDevice = new List <USBStorageModel>(); __RemoveDevice = new List <USBStorageModel>(); var temp = USBStorageTool.GetAll(); USBDictionary.Bind(ref temp); if (__AllDevice != null) { //对比插入的设备列表 __InsertDevice = Except(temp, __AllDevice); //对比移除的设备列表 __RemoveDevice = Except(__AllDevice, temp); } //更新当前最新USB列表 __AllDevice = temp; __RefreshTime = DateTime.Now; } }