View Full Version : سوال: مشکل در enabled کردن یا نکردن checkbox
sajadzare
جمعه 04 بهمن 1392, 12:39 عصر
سلام
من میخوام به محض شروع عملیات backgroundworker چک باکس توی فرم اصلی غیر فعال بشه من ابتدای شروع عملیات با دستور enabled=false موفق به غیرفعال کردن چک باکس میشم ولی وقتی برنامه به کد enabled=true میرسه ارور میده و نمیتونه چک باکس رو فعال کنه به نظرتون مشکل از کجاست؟؟؟
امیر مهرشاد
جمعه 04 بهمن 1392, 13:10 عصر
لطفا کدتو بزار ببینیم دستور enabled=false رو کجا زدی
sajadzare
یک شنبه 06 بهمن 1392, 18: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, 18:33 عصر
لطفا کدتو بزار ببینیم دستور enabled=false رو کجا زدی
checkbox1.enabled=false;
backgroundWorker1.RunWorkerAsync();
checkbox1.enabled=true;
من قبل از شروع بکگراند ورکر چک باکس رو غیر فعال میکنم و بعد از تمام شدن عملیات ورکر اونو فعال میکنم ولی در زمان فعال شدن ارور میده
fmehrvarzi
یک شنبه 06 بهمن 1392, 21:00 عصر
به محض اینکه RunWorkerAssync اجرا شد تمامی دستورات بعدش همزمان با نخ وورکر اجرا میشوند
شما باید در متد RunWorkerComplete بیایید دستور checkbox1.enabled=true بکار ببرید
و یا این دستور را بکار ببرید:
checkbox1.enabled=false;
backgroundWorker1.RunWorkerAsync();
While(backgroundWorker.IsBusy)
{
Thread.Sleep(100);
}
checkbox1.enabled=true;
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.