PDA

View Full Version : سوال: مشکل در enabled کردن یا نکردن checkbox



sajadzare
جمعه 04 بهمن 1392, 11:39 صبح
سلام

من میخوام به محض شروع عملیات backgroundworker چک باکس توی فرم اصلی غیر فعال بشه من ابتدای شروع عملیات با دستور enabled=false موفق به غیرفعال کردن چک باکس میشم ولی وقتی برنامه به کد enabled=true میرسه ارور میده و نمیتونه چک باکس رو فعال کنه به نظرتون مشکل از کجاست؟؟؟

امیر مهرشاد
جمعه 04 بهمن 1392, 12:10 عصر
لطفا کدتو بزار ببینیم دستور enabled=false رو کجا زدی

sajadzare
یک شنبه 06 بهمن 1392, 17:15 عصر
مشکل بخاطر این است که شما یک شی را در یک ترد دیگر ایجاد کردین و در اون ترد بهش دسترسی ندارین باید اون را به روش زیر به ترد worker عبور دهید.
CheckBox chkbox1=new CheckBox();
//set props of chkbox1 ...

//Start your background process with this, somewhere in your code
worker.RunWorkerAsync(chkboxbox1);

//SomeWhere in your bw_DoWork(object sender, DoWorkEventArgs e) Method
CheckBox chkboxPassed =e.argument as CheckBox;
// You can access all the props of checkbox1


من متوجه نشدم

sajadzare
یک شنبه 06 بهمن 1392, 17:33 عصر
لطفا کدتو بزار ببینیم دستور enabled=false رو کجا زدی




checkbox1.enabled=false;

backgroundWorker1.RunWorkerAsync();

checkbox1.enabled=true;



من قبل از شروع بکگراند ورکر چک باکس رو غیر فعال میکنم و بعد از تمام شدن عملیات ورکر اونو فعال میکنم ولی در زمان فعال شدن ارور میده

fmehrvarzi
یک شنبه 06 بهمن 1392, 20:00 عصر
به محض اینکه RunWorkerAssync اجرا شد تمامی دستورات بعدش همزمان با نخ وورکر اجرا میشوند
شما باید در متد RunWorkerComplete بیایید دستور checkbox1.enabled=true بکار ببرید

و یا این دستور را بکار ببرید:
checkbox1.enabled=false;

backgroundWorker1.RunWorkerAsync();

While(backgroundWorker.IsBusy)
{
Thread.Sleep(100);
}
checkbox1.enabled=true;