// Background Version public void CopyTables(object sender, DoWorkEventArgs e) { //CopyObject settings = this.Settings; CopyObject settings = e.Argument as CopyObject; CopyManager manager = new CopyManager(settings); BackgroundWorker worker = (BackgroundWorker)sender; //manager.OnRowsCopied +=manager_OnRowsCopied; //ProgressChanged //worker.ReportProgress() try { if (this.cbxDeleteRows.Checked) { manager.PreCopy(); } } catch (Exception er) { MessageBox.Show(er.Message, "Pre SQL Error"); return; } foreach (DataGridViewRow row in this.dataGridView1.Rows) { TableObject obj = (TableObject)row.DataBoundItem; // prepare obj.Row = row; obj.Worker = worker; //worker.ReportProgress(0, obj); if (worker.CancellationPending) { break; } try { if (obj.Selected) { manager.Copy(obj); //obj.Status = "Success"; obj.CopyStatus = CopyStatusEnum.Success; //worker.ReportProgress(0, row); worker.ReportProgress(100, obj); //obj.ShowProgress(); } } catch (Exception er) { obj.CopyStatus = CopyStatusEnum.Error; obj.Message = er.Message; //obj.Status = er.Message; //worker.ReportProgress(0, er); //worker.ReportProgress(0, row); worker.ReportProgress(0, obj); //obj.ShowProgress(); } finally { } } //foreach (TableObject obj in settings.Tables) //{ // if (worker.CancellationPending) // { // break; // } // try // { // if (obj.Selected) // { // manager.Copy(obj.Name); // obj.Status = "Success"; // worker.ReportProgress(0); // } // } // catch (Exception er) // { // obj.Status = er.Message; // worker.ReportProgress(0, er); // } // finally // { // } //} try { if (this.cbxDeleteRows.Checked) { manager.PostCopy(); } } catch (Exception er) { MessageBox.Show(er.Message, "Post SQL Error"); return; } }
//// Consume them //static void Main(string[] args) { // var options = new Options(); // if (CommandLine.Parser.Default.ParseArguments(args, options)) { // // Values are available here // if (options.Verbose) Console.WriteLine("Filename: {0}", options.InputFile); // } //} //https://commandline.codeplex.com/ static void Main(string[] args) { int exitCode = 0; // pare the command line arguments var result = CommandLine.Parser.Default.ParseArguments <Options>(args); // if there are no errors if (!result.Errors.Any()) { // Values are available here string filename = result.Value.FileName; if (!string.IsNullOrEmpty(filename)) { if (File.Exists(filename)) { CopyObject obj = CopyObject.Read(filename); if (obj != null) { CopyManager manager = new CopyManager(obj); { try { manager.PreCopy(); } catch (Exception er) { obj.PreCopyStatus = er.Message; return; } foreach (TableObject table in obj.Tables) { try { if (table.Selected) { manager.Copy(table); //table.Status = "Success"; table.CopyStatus = CopyStatusEnum.Success; System.Console.WriteLine("Success " + table.Name); } } catch (Exception er) { //table.Status = er.Message; table.Message = er.Message; table.CopyStatus = CopyStatusEnum.Error; System.Console.WriteLine("Error " + table.Name); exitCode = -1; } } try { manager.PostCopy(); } catch (Exception er) { obj.PostCopyStatus = er.Message; exitCode = -1; } } } } else { exitCode = -5; } } else { exitCode = -4; } } else { exitCode = -3; } Environment.Exit(exitCode); }
//public void ShowProgress(TableObject table) //{ // var Row = table.Row; // //table.ShowProgress(); // //DataGridViewRow row = e.UserState as DataGridViewRow; // //if (row != null) // //{ // // // this.dataGridView1.FirstDisplayedScrollingRowIndex = row.Index; // // //this.dataGridView1.Refresh(); // // this.dataGridView1.CurrentCell = row.Cells[3]; // // this.dataGridView1.UpdateCellValue(2, row.Index); // //} // if (Row != null) // { // //int i = (int) Math.Round((decimal) this.Copied / this.Count, 0) * 100; // //Row.Cells[4].Value = e.ProgressPercentage; // Row.Cells[4].Value = table.Percentage; // var parent = Row.DataGridView; // parent.CurrentCell = Row.Cells[3]; // parent.UpdateCellValue(2, Row.Index); // } //} public async void CopyTablesAsync(CopyObject settings) { CopyManager manager = new CopyManager(settings); //manager.OnRowsCopied +=manager_OnRowsCopied; try { if (this.cbxDeleteRows.Checked) { await Task.Run(() => manager.PreCopy()); } } catch (Exception er) { MessageBox.Show(er.Message, "Pre SQL Error"); return; } foreach (DataGridViewRow row in this.dataGridView1.Rows) { TableObject obj = (TableObject)row.DataBoundItem; // prepare obj.Row = row; //obj.Worker = worker; //worker.ReportProgress(0, obj); //if (worker.CancellationPending) //{ // break; //} try { if (obj.Selected) { await Task.Run(() => manager.Copy(obj)); //manager.Copy(obj); //obj.Status = "Success"; obj.CopyStatus = CopyStatusEnum.Success; //this.ShowProgress(obj); //worker.ReportProgress(0, row); //worker.ReportProgress(100, obj); //obj.ShowProgress(); } else { obj.CopyStatus = CopyStatusEnum.Skipped; } obj.ShowProgress(); } catch (Exception er) { obj.CopyStatus = CopyStatusEnum.Error; //obj.Status = er.Message; obj.Message = er.Message; //this.ShowProgress(obj); obj.ShowProgress(); //worker.ReportProgress(0, er); //worker.ReportProgress(0, row); //worker.ReportProgress(0, obj); //obj.ShowProgress(); } finally { } } //foreach (TableObject obj in settings.Tables) //{ // if (worker.CancellationPending) // { // break; // } // try // { // if (obj.Selected) // { // manager.Copy(obj.Name); // obj.Status = "Success"; // worker.ReportProgress(0); // } // } // catch (Exception er) // { // obj.Status = er.Message; // worker.ReportProgress(0, er); // } // finally // { // } //} try { if (this.cbxDeleteRows.Checked) { await Task.Run(() => manager.PostCopy()); //manager.PostCopy(); } } catch (Exception er) { MessageBox.Show(er.Message, "Post SQL Error"); return; } }