private async void StartSync(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.InitialDirectory = "c:\\"; openFileDialog1.Filter = "xlsx files (*.xlsx)|*.xlsx|All files (*.*)|*.*"; openFileDialog1.FilterIndex = 1; openFileDialog1.RestoreDirectory = true; openFileDialog1.ShowDialog(); if (!string.IsNullOrEmpty(openFileDialog1.FileName)) { AsyncExecute ae = new AsyncExecute(() => { try { LoadFromExcel(openFileDialog1.FileName); } catch (Exception ex) { Interaction.MsgBox("Не удается считать данные из файла: " + ex.Message); App.Current.Dispatcher.Invoke(() => Close()); } }); ae.ShowDialog(); if (RewriteCheck.IsChecked == true) { foreach (var entity in App.PC.Items) { App.PC.Items.Remove(entity); } await App.TrySaveChanges(); foreach (var item in Items) { App.PC.Items.Add(item); } await App.TrySaveChanges(); Console.WriteLine("База данных синхронизирована! Добавлено {0} элементов", Items.Count); Interaction.MsgBox("База данных успешно синхронизирована!"); AppConsole.Restart(); } else if (ConcatCheck.IsChecked == true) { foreach (var item in Items) { App.PC.Items.Add(item); } await App.TrySaveChanges(); Console.WriteLine("База данных синхронизирована! Добавлено {0} элементов", Items.Count); Interaction.MsgBox("База данных успешно синхронизирована!"); AppConsole.Restart(); } else if (UpdateCheck.IsChecked == true) { foreach (var item in Items) { foreach (var olditem in App.PC.Items) { if (item.Name == olditem.Name) { olditem.Type = item.Type; olditem.Value = item.Value; } } } await App.TrySaveChanges(); Console.WriteLine("База данных синхронизирована! Добавлено {0} элементов", Items.Count); Interaction.MsgBox("База данных успешно синхронизирована!"); AppConsole.Restart(); } } }