BackgroundWorker and ProgressBar - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

BackgroundWorker and ProgressBar

0 امتیاز

سلام دوستان عزیز وقتتون بخیر من میخوام موقع لود گزارش یک پروگرس بار هم برای فرم بزارم که کاربر بفهمه که برنامه درحال اجرای عملیات هستش برای همین از یک بک گراند ورکر و یک پروگرس بار به طریق زیر استفاده کردم نمیدونم طریقه استفاده من به این شکل درست هست یا نه و اینکه زمان دقیق لود شدن گزارش را نمیدونم یعنی اگه فایلمون حجیم باشه تایم لود شدن فرم با پر شدن پروگرس بار یکی نمیشه لطفا اگه فرصت کردید بنده را   راهنماییم بفرمایید ممنونم البته اینم بگم که بدنه اصلی کد درداخل بلوک botton2 بود که وقتی کاربر روی این دکمه کلیک میکرد گزارش لود میشد حالا من این تیکه کد را داخل بلوک     BG_RunWorkerCompleted   قرار دادم که نمیدونم درست هست یا نیست  چون تابه حال با بک گراند ورکر کار نکردم لطفا راهنماییم بفرمایید پیشاپیش از صبرو شکیبایی شما سپاسگذارم

  

 


 

 

private void button2_Click(object sender, EventArgs e)
        {
           
        BG.RunWorkerAsync(500);
        this.Cursor = Cursors.WaitCursor;
           //BG.CancelAsync();
         }

        private void BG_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            int time = (int)e.Argument; 
               temp = new List<int>();
             for (int i = 0; i <= 10; i++)
             {
                 if (BG.CancellationPending)
                 {
                     e.Cancel = true;
                     break;
                 }
                 BG.ReportProgress(i * 10);
                 Thread.Sleep(time);
                    temp.Add(i);
                      }
                    e.Result = temp;
                   
                   
                   // BG.CancelAsync();

        }

        private void BG_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
        {if (e.Cancelled) 
               {
                MessageBox.Show("You Cancelled The BackGroundWorker!");
               }
               else
                    {
                        frm_Report frm_R = new frm_Report();
                        var dtRpt = Rpt_data();
                        var ds = new DataSet();
                        ds.Tables.Add(dtRpt);
                        var stiReport1 = new StiReport();
                        stiReport1.Load(Application.StartupPath + @"\Report.mrt");

                        DataTable table = new DataTable();
                        table.Columns.Add(new DataColumn("t1"));
                        table.Columns.Add(new DataColumn("t2"));
                        DataTable ff = ds.Tables[0];
                        for (int i = 0; i < ff.Rows.Count; i++)
                        {
                            table.Rows.Add(ff.Rows[i][ff.Columns[0].ColumnName].ToString(), ff.Rows[i][ff.Columns[1].ColumnName].ToString());
                        }
                        stiReport1.RegData("Table1", table);
                        //stiReport1.Design();
                        stiReport1.Render(false);
                        frm_R.stiViewerControl1.Report = stiReport1;
                        frm_R.stiViewerControl1.Refresh();
                        frm_R.Show();

                      
                     //   progressBar1.Value -= progressBar1.Value;
               /*  temp.AddRange((List<int>)e.Result);
               MessageBox.Show("Done!");*/
                       }
        }

        private void BG_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }

 

سوال شده آذر 19, 1393  بوسیله ی ada_a899a (امتیاز 35)   2 11 17
ویرایش شده آذر 19, 1393 بوسیله ی ada_a899a

پاسخ شما

اسم شما برای نمایش (دلخواه):
از ایمیل شما فقط برای ارسال اطلاعات بالا استفاده میشود.
تایید نامه ضد اسپم:

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
...