PDA

View Full Version : سوال: دلیل عمل نکردن : BackgroundWorker1.CancelAsync() ???



si6arp
جمعه 05 آذر 1389, 22:03 عصر
با سلام
در یکی از پروژه هام از BackgroundWorker استفاده کرده ام. حال برای کاری نیاز است که این کنترول Stop بشه و دوباره Start بشه.
خوب من برای توقف از کد زیر استفاده میکنم


BackgroundWorker1.CancelAsync();



ولی وقتی میخوام دوباره اجرا کنم اررور میده و میگه IsBusy.... خوب پس چه طوری بیشه اینو متقوف کرد ؟

البته من این خاصیت هم اضافه کرده ام :



BackgroundWorker1.WorkerSupportsCancellation = true;

nPad.Net
جمعه 05 آذر 1389, 22:23 عصر
سلام
این مثال (http://msdn.microsoft.com/en-us/library/cc221403(VS.95).aspx) رو دنبال کنید
موفق باشید

si6arp
جمعه 05 آذر 1389, 22:43 عصر
متاسفانه جوابی نگرفتم.....

mehdi.mousavi
جمعه 05 آذر 1389, 22:57 عصر
متاسفانه جوابی نگرفتم.....

سلام.
توی تابع DoWork باید CancellationPending رو هر از گاهی چک کنید، اگر true بود، از DoWork خارج بشید. برای توضیحات بیشتر، این پست (http://barnamenevis.org/forum/showpost.php?p=880050&postcount=9) رو مطالعه کنید.

موفق باشید.

dr_jacky_2005
شنبه 06 آذر 1389, 10:46 صبح
با سلام
در یکی از پروژه هام از BackgroundWorker استفاده کرده ام. حال برای کاری نیاز است که این کنترول Stop بشه و دوباره Start بشه.
خوب من برای توقف از کد زیر استفاده میکنم


BackgroundWorker1.CancelAsync();

ولی وقتی میخوام دوباره اجرا کنم اررور میده و میگه IsBusy.... خوب پس چه طوری بیشه اینو متقوف کرد ؟

البته من این خاصیت هم اضافه کرده ام :



BackgroundWorker1.WorkerSupportsCancellation = true;

شما اصلا قضیۀ backgroundDowork رو اشتباه فهمیدید!!!
این واسه اینکاره که یک عملیات سنگین باعث قفل و هنگ شدن فرمتون نشه.

اینکاری که شما میخواین که اون عملیات لحظه ای استاپ شه رو باید با ترد ها انجام بدین.
هملیاتتون رو توو ترد میزارید بعد هر جا خاصتین استاپ و استارت میکنید