دوستان وقتی رویداد یک button در حال اجرا هستش و button غیرفعال می شه من می خوام غیرفعال نشه و کار کنه یعنی وقتی رویداد در حال اجرا هست بشه دوباره روی button کلیک کرد و اون رویداد دوباره اجرا بشه
دوستان وقتی رویداد یک button در حال اجرا هستش و button غیرفعال می شه من می خوام غیرفعال نشه و کار کنه یعنی وقتی رویداد در حال اجرا هست بشه دوباره روی button کلیک کرد و اون رویداد دوباره اجرا بشه
با اجازه اساتيد
فك كنم بايد كد رويدادو داخل thread بنويسي و هر وقت كليك كرد اون thread رو اجراش كني
چ کاری رو می خواین انجام بدین؟
بصورت آسنکرون می تونین انجامش بدین (در واقع همون thread دیگر)
از backgroundWorker هم می تونین استفاده کنین اینجور وقتا کارا رو راحت می کنه
من از thread استفاده کردم button فعال نگه می داره ولی وقتی مجدد روش کلیک می کنی تا پایان عملیات thread برنامه هنگ می کنه من در واقع می خوام با کلیک مجدد روی همون button ادامه عملیات رو متوقف کنم...
کدیهم که در button استفاده کردم ابنه...
if (i == 0)
{
i = 1;
Stop =
false;
btnControl.Text =
"قطع عملیات";
th1 =
new System.Threading.Thread(new System.Threading.ThreadStart(Control));
th1.Start();
}
elseif (i == 1)
{
i = 0;
btnControl.Text =
"کنترل اسناد";
Stop =
true;
th1 =
null;
}
لطفا کمک کنید....
با سلام
از متود Application.DoEvents درون متود و حلقه ها استفاده کنید، احتمالا مشکل حل شود.
چشم ظاهر گر نبیند عیب نیست چشم دل گر ننگرد باید گریست**********اَلسَّلامُ عَلَى الْحُسَيْنِ وَ عَلى عَلِىِّ بْنِ الْحُسَيْنِ وَ عَلى اَوْلادِ الْحُسَيْنِ وَ عَلى اَصْحابِ الْحُسَيْنِ
همونطور ک گفتم از BackgroundWorker استفاده کنید.
زمانی که چند کار همزمان می خواین انجام بدین و همزمان با کنترلهای روی فرمتون هم سرو کار دارین (یعنی با ترد مربوط ب UI می خواین همزمان کار کنید)، راحت تره ک از BackgroundWorker استفاده کنید ک درگیر Invoke های جور واجور (چون مثلا اگه کنترلی روی یک ترد (معمولا ترد اصلی ک مربوط ب UI هست) ایجاد شده باشه و بخواین از ترد دیگه بهش دسترسی داشته باشید در حالت عادی CrossThreadingException می خورین و باید invoke انجام بدید تا ب ترد مالک اون کنترل برسین) و exception های مربوط ب thread ها از جمله CrossThreading نشین ، بهتره از BackgroundWorker استفاده کنید