private void StartButton_Click(object sender, System.EventArgs e) { StartProgressDelegate progDel = new StartProgressDelegate(StartProcess); progDel.BeginInvoke(100, null, null); MessageBox.Show("Done with operation!!"); }
void worker_DoWork(object sender, DoWorkEventArgs e) { if (worker != null && worker.CancellationPending != true) { CodeEntityParameter entParam = e.Argument as CodeEntityParameter; CodeGenerator.Core.CodeGenerator code = new CodeGenerator.Core.CodeGenerator(); CodeEntityDataReader entDataReader = new CodeEntityDataReader(GetConnStr(entParam.DataBaseName)); List<Table> list = new List<Table>(); foreach (var table in lstTable.Items) { list.Add(table as Table); } StartProgressDelegate startProgress = new StartProgressDelegate(StartProgress); //progressBar.Invoke(startProgress, new object[] { list.Count, 0, 1, 0 }); action3 = StartProgress; progressBar.Invoke(action3, new object[] { list.Count, 0, 1, 0 }); #region 用PLinq方式执行生成操作 //var pList = list.AsParallel<Table>(); //pList.ForAll((t) => { // entDataReader.ColumnList(t as Table); // code.CreateCodeFile(t as Table, entParam); // ShowProgressDelegate showProgress = new ShowProgressDelegate(ShowProgress); // progressBar.Invoke(showProgress); // ShowLabelDelegate showLable = new ShowLabelDelegate(ShowLabel); // lblMsg.Invoke(showLable, string.Format("正在处理数据表:{0}", t.Name)); //}); #endregion #region 传统方式foreach执行生成操作 //foreach (var table in list) //{ // entDataReader.ColumnList(table as Table); // code.CreateCodeFile(table as Table, entParam); // ShowProgressDelegate showProgress = new ShowProgressDelegate(ShowProgress); // progressBar.Invoke(showProgress); //} #endregion #region Parallel并行执行生成操作 Parallel.ForEach(list, (t) => { entDataReader.GetColumns(t as Table); code.CreateCodeFile(t as Table, entParam); #region 委托方式使用1 //ShowProgressDelegate showProgress = new ShowProgressDelegate(ShowProgress); //progressBar.Invoke(showProgress); //ShowLabelDelegate showLable = new ShowLabelDelegate(ShowLabel); //lblMsg.Invoke(showLable, string.Format("正在处理数据表:{0}", t.Name)); #endregion #region 委托方式使用2 action1 = ShowProgress; progressBar.Invoke(action1); action2 = ShowLabel; lblMsg.Invoke(action2, string.Format("正在处理数据表:{0}", t.Name)); #endregion }); #endregion } }
void worker_DoWork(object sender, DoWorkEventArgs e) { if (worker != null && worker.CancellationPending != true) { CodeEntityParameter entParam = e.Argument as CodeEntityParameter; CodeGenerator.Core.CodeGenerator code = new CodeGenerator.Core.CodeGenerator(); CodeEntityDataReader entDataReader = new CodeEntityDataReader(GetConnStr(entParam.DataBaseName)); List <Table> list = new List <Table>(); foreach (var table in lstTable.Items) { list.Add(table as Table); } StartProgressDelegate startProgress = new StartProgressDelegate(StartProgress); //progressBar.Invoke(startProgress, new object[] { list.Count, 0, 1, 0 }); action3 = StartProgress; progressBar.Invoke(action3, new object[] { list.Count, 0, 1, 0 }); #region 用PLinq方式执行生成操作 //var pList = list.AsParallel<Table>(); //pList.ForAll((t) => { // entDataReader.ColumnList(t as Table); // code.CreateCodeFile(t as Table, entParam); // ShowProgressDelegate showProgress = new ShowProgressDelegate(ShowProgress); // progressBar.Invoke(showProgress); // ShowLabelDelegate showLable = new ShowLabelDelegate(ShowLabel); // lblMsg.Invoke(showLable, string.Format("正在处理数据表:{0}", t.Name)); //}); #endregion #region 统方式foreach执行生成操作 //foreach (var table in list) //{ // entDataReader.ColumnList(table as Table); // code.CreateCodeFile(table as Table, entParam); // ShowProgressDelegate showProgress = new ShowProgressDelegate(ShowProgress); // progressBar.Invoke(showProgress); //} #endregion #region Parallel并行执行生成操作 Parallel.ForEach(list, (t) => { entDataReader.GetColumns(t as Table); code.CreateCodeFile(t as Table, entParam); #region 委托方式使用1 //ShowProgressDelegate showProgress = new ShowProgressDelegate(ShowProgress); //progressBar.Invoke(showProgress); //ShowLabelDelegate showLable = new ShowLabelDelegate(ShowLabel); //lblMsg.Invoke(showLable, string.Format("正在处理数据表:{0}", t.Name)); #endregion #region 委托方式使用2 action1 = ShowProgress; progressBar.Invoke(action1); action2 = ShowLabel; lblMsg.Invoke(action2, string.Format("正在处理数据表:{0}", t.Name)); #endregion }); #endregion } }