public void UpdateComparisonProgress(double progress, TableComparison newTable) { // System.Diagnostics.Debug.WriteLine("Reporting Async Progress: " + progress); OperationProgress = progress; if (newTable != null) { bool isInLeftDb = (newTable.LeftTable != null); bool isInRightDb = (newTable.RightTable != null); DbTableComparisonViewModel tableVm = new DbTableComparisonViewModel(newTable, isInLeftDb, isInRightDb); ComparisonTables.Add(tableVm); } }
public void DoCompareSchemaCommand(object sender) { if (LeftProfile != null && RightProfile != null) { ThreadStart dbCompareThread = delegate() { try { List <TableComparison> missingTables = DbComparisons.CompareSchema(LeftProfile, RightProfile, (prog, table) => Application.Current.Dispatcher.BeginInvoke(new Action <double, TableComparison>(UpdateComparisonProgress), DispatcherPriority.Normal, prog, table)); Application.Current.Dispatcher.BeginInvoke(new Action <double, List <TableComparison> >(FinishComparison), DispatcherPriority.Normal, 100, missingTables); } catch (Exception e) { Application.Current.Dispatcher.BeginInvoke(new Action <Exception>(HandleTableComparisonException), DispatcherPriority.Normal, e); } }; _isComparingSchemas = true; OperationProgress = 0; ComparisonTables.Clear(); new Thread(dbCompareThread).Start(); } }