/// <summary> /// /// </summary> private void ImportFromFile() { IsCanOperate = false; OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "csv|*.csv"; List <TagViewModel> ltmp = new List <TagViewModel>(); if (ofd.ShowDialog().Value) { var stream = new StreamReader(File.Open(ofd.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite)); while (!stream.EndOfStream) { string sval = stream.ReadLine(); if (!string.IsNullOrEmpty(sval)) { TagViewModel tm = TagViewModel.LoadFromCSVString(sval); ltmp.Add(tm); } } stream.Close(); } int mode = 0; var mm = new ImportModeSelectViewModel(); if (mm.ShowDialog().Value) { mode = mm.Mode; } else { return; } StringBuilder sb = new StringBuilder(); Task.Run(() => { BeginShowNotify(); int id; int icount = 0; int tcount = ltmp.Count; //删除所有,重新添加 if (mode == 1) { DevelopServiceHelper.Helper.ClearTagAll(this.mDatabase); } bool haserro = false; foreach (var vv in ltmp) { //更新数据 if (!DevelopServiceHelper.Helper.Import(this.mDatabase, new Tuple <Tagbase, HisTag>(vv.RealTagMode, vv.HisTagMode), mode, out id)) { sb.AppendLine(string.Format(Res.Get("AddTagFail"), vv.RealTagMode.Name)); haserro = true; } else { vv.IsNew = false; vv.IsChanged = false; } icount++; ServiceLocator.Locator.Resolve <IProcessNotify>().ShowNotifyValue(((icount * 1.0 / tcount) * 100)); } if (haserro) { string errofile = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(ofd.FileName), "erro.txt"); System.IO.File.WriteAllText(errofile, sb.ToString()); if (MessageBox.Show(Res.Get("ImportErroMsg"), "", MessageBoxButton.OKCancel) == MessageBoxResult.OK) { try { Process.Start(Path.GetDirectoryName(errofile)); } catch { } } } Application.Current.Dispatcher.BeginInvoke(new Action(() => { IsCanOperate = true; QueryGroups(); EndShowNotify(); })); }); }