PDA

View Full Version : سوال: ارسال پارامتر به BackgroundWorker



abasfar
شنبه 30 بهمن 1389, 13:10 عصر
سلام من مشکل جدی دارم با ارسال ارگمان به BackgroundWorker
کد من


private void but1_Click(object sender, EventArgs e)
{
butSearch.Enabled = false;
ParamList pl = new ParamList();
pl.P1 = TxtSearch.Text;
BgWork1.RunWorkerAsync(pl);
}
private struct ParamList
{
public string P1;
}
private void BgWork1_DoWork(object sender, DoWorkEventArgs e)
{
ParamList pp = (ParamList)sender;


که میگه قابل تبدیل نیست و ارور قطع اجرای برنامه

ali.rezaei7
شنبه 30 بهمن 1389, 16:24 عصر
درود. آرگومان ارسالي در e.Argument قرار مي گيره.
كد صحيح:ParamList pp = (ParamList)e.Argument

abasfar
شنبه 30 بهمن 1389, 16:33 عصر
ممنون از کمک تان فقط من میتونم از sender هم استفاده کنم به عنوان ورودی یا خروجی

ali.rezaei7
شنبه 30 بهمن 1389, 16:59 عصر
دقيقا متوجه نشدم منظورتون از ورودي و خروجي چيه.فقط مي تونم بگم كه اين پارامتر آبجكتي كه رويداد رو فراخواني كرده رو نگه مي داره و هيچ ارتباطي به آرگوماني ارسالي از طريق تابع نداره. در كد شما آبجكت BgWork1 رو نگه مي داره.
اگه مي خواييد بعد از اتمام رويداد خروجي داشته باشيد مي تونيد در رويداد به e.Result مقدار بديد. و تو رويداد RunWorkerCompleted از اون استفاده كنيد.
موفق باشيد.