PDA

View Full Version : سوال: لغو و یا نگه داشتن عملیات در حال اجرا برنامه؟!



Alirezanet
یک شنبه 16 خرداد 1389, 09:49 صبح
سلام
میخواستم بدونم
بهترین راه برای نگه داشتن عملیات برنامه و ادامه دادن به اونها چیه ؟!

یعنی بشه عملیات سنگینی رو که برنامه داره انجام میدرو ... به شکل Pause – Resume نگه داشت و ادامه داد ... ویا کلا Stop کرد ؟!

البته اگه از Background Worker استفاده کنیم این کارو میشه به راحتی انجام داد ولی میخوام بدون استفاده از اون این کارو کنم ..

Open-Source
یک شنبه 16 خرداد 1389, 09:54 صبح
بستگی داره که عملیاتت چی باشه؟
ولی بهترین راه استفاده از همون BW هستش.

Alirezanet
شنبه 29 خرداد 1389, 10:55 صبح
مثلا توی بدنه For Each یا For Next یا یه همچین چیزایی ...
بشه پاز گرفت و ......... :متفکر:

Hossis
شنبه 29 خرداد 1389, 14:05 عصر
مثلا توی بدنه For Each یا For Next یا یه همچین چیزایی ...
بشه پاز گرفت و ......... :متفکر:
براي اين کار بايد سه مرحله طي کنيد
اول در سطح عمومي فرم يک متغير از نوع بولين ايجاد کنيد
Dim Poused As boolean
يک دکمه براي مکث/ادامه روي فرم قرار داده که مقدار Poused را برعکس کند
Poused=not Poused
سوم اين که در داخل حلقه بررسي کنيد اگر مقدار Poused مثبت بود،‌ از حلقه خارج شود
البته بايد بگم که براي مکث بايد يک متغير ايستا Static هم داخل روال بايد تعريف کنيد که محل توقف را حفظ کند مثلا اگر حلقه شما از يک تا 300 هست و در شماره 65 متوقف شده،‌ اين متغير قبل از خروج از حلقه، مقدار 65 را ذخيره کند ،‌ شروع حلقه هم بايد از همين متغير باشد که تبعا در اولين بار اجرا صفر است چون تا آن موقع مقدار دهي نشده است به اين مثال توجه کنيد:

sub DoWork
static i as Integer
for J as integer =I To List1.Items.count-1
If Poused=false then
Mytxt &=list1.Items(j)
else
I=J
Exit for
end if
end sub

در اين مثال ، پس از زدن دکمه مکث، متغير I شماره جاري را گرفته و از حلقه خارج مي‌شود. پس از اين که مجددا کاربر کار را از سر گرفت، از همان شماره ادامه مي‌دهد
براي توقف کامل،‌ همان سه مرحله اول کافي است

hero4000
یک شنبه 30 خرداد 1389, 09:16 صبح
دوست عزيز شما چرا از Thread استفاده نميکنيد

فکر کنم همين گزينه ها رو داشته باشه

استانداردتر هم هست

vbworm
پنج شنبه 24 تیر 1389, 17:09 عصر
Dim TRD As Threading.Thread
TRD.IsBackground = True
TRD.Start(PARAMETER)

برای توقف
TRD.Abort()

برای ادامه
TRD.Resume()