PDA

View Full Version : سوال: اجرای BackgroundWorker در یک کلاسی غیر از کلاس اصلی



دلتنگ اسمان
دوشنبه 23 دی 1392, 13:53 عصر
با سلام.
یه برنامه نوشتم که در حالت معمولی بدون مشکل اجرا میشه. اما وقتی که میخوام از BackgroundWorker برای نمایش درصد پیشرفت برنامه استفاده کنم برنامه جواب نمیده.
برنامه به این صورت هستش که در برنامه اصلی پس از زدن دکمه اجرا با توجه به انتخاب کاربر (3تا رادیوباتن برای انتخاب کاربر) کلاس مربوطه اجرا میشه. یعنی کاربر هر رادیو باتنی رو انتخاب کنه کدهای مربوط به اون رو در یه کلاس جداگانه نوشتم و کلاس مربوطه اجرا میشه. اما نمیتونم این BackgroundWorker را چطوری در کلاس مربوطه طوری تنظیم کنم که مشکل نداشته باشه.
این کدهای مربوطه به برنامه اصلی :

private BackgroundWorker bw = new BackgroundWorker();

public Form1()
{
InitializeComponent();

bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerComplet ed);

}


private void btn_exe_Click(object sender, EventArgs e)
{
if (bw.IsBusy != true)
{
bw.RunWorkerAsync();
}



در انتخاب اولی یعنی cod_88 ارگومانهای مربوط به BackgroundWorker رو به شکل زیر به کلاس مربوطه میفرستم و نمیدونم این کار درسته یا نه؟


cod88 cod8 = new cod88();
cod110 cod10 = new cod110();



private void bw_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;

if (radioButton3.Checked)
{
cod8.FileName_barnameh = this.FileName_barnameh;
cod8.FileName110_99_88 = this.FileName110_99_88;
cod8.number_days = this.number_days;
cod8.cod_88(worker,e);
}
else if (radioButton2.Checked)
{
cod99 cod9 = new cod99();
cod9.FileName_barnameh = this.FileName_barnameh;
cod9.FileName110_99_88 = this.FileName110_99_88;
cod9.number_days = this.number_days;

}

else if (radioButton1.Checked)
{

cod10.FileName_barnameh = this.FileName_barnameh;
cod10.FileName110_99_88 = this.FileName110_99_88;
cod10.number_days = this.number_days;
cod10.cod_110();

}

fmehrvarzi
دوشنبه 23 دی 1392, 17:49 عصر
نگفتین چه خطایی رخ میدهد؟ اگر با بکگراند ورکر مشکل دارین به کتاب ها و لینکهای آموزشی مراجعه کنید.