示例#1
0
        private void StartButton_Click(object sender, System.EventArgs e)
        {
            StartProgressDelegate progDel = new StartProgressDelegate(StartProcess);

            progDel.BeginInvoke(100, null, null);
            MessageBox.Show("Done with operation!!");
        }
示例#2
0
文件: Main.cs 项目: yuanrui/Examples
        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
            }
        }
示例#3
0
文件: Main.cs 项目: yuanrui/Examples
        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
            }
        }