/// <summary> /// 根据Task生成一个Mirror /// </summary> private Mirror GetNewMirror(SPFTask task) { Mirror mirror = new Mirror(); mirror.Block = SourcePosition.CurrentSelectedDisk.CurrentSelectedItem; mirror.Source = task.Device; mirror.Target = TargetPosition.DirPath; mirror.TargetFile = DateTime.Now.ToString("yyyy-MM-dd-hh-mm-ss") + ".bin"; EnumDeviceType deviceType = task.Device.DeviceType; if (deviceType == EnumDeviceType.Chip) { mirror.Type = EnumMirror.Chip; } else if (deviceType == EnumDeviceType.SIM) { mirror.Type = EnumMirror.SIM; } else if (deviceType == EnumDeviceType.SDCard) { mirror.Type = EnumMirror.SDCard; } else { mirror.Type = EnumMirror.Device; } mirror.MirrorFlag = MirrorFlag.NewMirror; return(mirror); }
public MirrorControlerBox(SPFTask task, Mirror mirror, IAsyncTaskProgress asyn) { _task = task; _mirror = mirror; _asyn = asyn; _mirrorControler = new MirrorControler(); }
/// <summary> /// 执行数据镜像 /// </summary> /// <param name="task">任务</param> /// <param name="mirror">镜像源信息</param> /// <param name="asyn">异步通知</param> public void Execute(SPFTask task, Mirror mirror, IAsyncTaskProgress asyn) { //生成保存目录 FileHelper.CreateExitsDirectorySafe(mirror.Target); //镜像 MirrorService = SingleWrapperHelper <MirrorServiceFactory> .GetInstance().GetInstance(mirror); MirrorService.Execute(mirror, asyn); if (FileHelper.IsValid(mirror.Local)) {//镜像成功 mirror.VerifyCode = FileHelper.MD5FromFileUpper(mirror.Local); //生成MD5文件 var md5File = mirror.Local.TrimEnd(SPFTask.EXT_MIRROR) + SPFTask.EXT_VERIFYCODE_FILE; FileHelper.CreateFile(md5File, mirror.VerifyCode, Encoding.UTF8); //生成设备信息文件 var deviceFile = mirror.Local.TrimEnd(SPFTask.EXT_MIRROR) + SPFTask.EXT_DEVICE; Serializer.SerializeToBinary(task.Device, deviceFile); task.TaskMirrorFilePath = mirror.Local; task.VerifyCodes.Add(new FileVerifyCode() { FilePath = mirror.Local, VerifyCode = mirror.VerifyCode }); } }
private void DeviceMonitor_OnDeviceConnected(IDevice dev, bool isOnline) { _mirrorViewModel.SourcePosition.RefreshPartitions(dev); SPFTask task = new SPFTask(); task.Name = "TestName"; task.Device = (Device)dev; _mirrorViewModel.Initialize(task); }
/// <summary> /// 数据提取控制器构造器 /// </summary> /// <param name="task">当前任务实例</param> /// <param name="source">提取对象</param> /// <param name="extractItems">提取项集合</param> /// <param name="asyn">异步通知</param> /// <param name="workMode">工作模式</param> public DataExtractControler(SPFTask task, Pump source, ExtractItemCollection extractItems, IAsyncProgress asyn, EnumDataExtractWorkMode workMode) { OwnerTask = task; SourcePump = source; Asyn = asyn; WorkMode = workMode; ExtractItems = extractItems.GetAllCheckedExtractItem(); MainWorkThread = new SingleThread(); }
public void Initialize(SPFTask task) { IAsyncTaskProgress asyncProgress = new MyDefaultSingleTaskReporter(); Mirror mirror = GetNewMirror(task); SourcePosition.MirrorControlerBox mirrorControler = new SourcePosition.MirrorControlerBox(task, mirror, asyncProgress); SourcePosition.SetMirrorControler(mirrorControler); //设置滚动条进度 asyncProgress.ProgressChanged += (o, e) => { ProgressPosition.FinishedSize = (int)e.Progress; }; asyncProgress.Terminated += (o, e) => { if (e.IsCompleted) { ProgressPosition.FinishedSize = ProgressPosition.TotalSize; } }; }