لغو و یا نگه داشتن عملیات در حال اجرا برنامه؟!
سلام
میخواستم بدونم
بهترین راه برای نگه داشتن عملیات برنامه و ادامه دادن به اونها چیه ؟!
یعنی بشه عملیات سنگینی رو که برنامه داره انجام میدرو ... به شکل Pause – Resume نگه داشت و ادامه داد ... ویا کلا Stop کرد ؟!
البته اگه از Background Worker استفاده کنیم این کارو میشه به راحتی انجام داد ولی میخوام بدون استفاده از اون این کارو کنم ..
نقل قول: لغو و یا نگه داشتن عملیات در حال اجرا برنامه؟!
بستگی داره که عملیاتت چی باشه؟
ولی بهترین راه استفاده از همون BW هستش.
نقل قول: لغو و یا نگه داشتن عملیات در حال اجرا برنامه؟!
مثلا توی بدنه For Each یا For Next یا یه همچین چیزایی ...
بشه پاز گرفت و ......... :متفکر:
نقل قول: لغو و یا نگه داشتن عملیات در حال اجرا برنامه؟!
نقل قول:
نوشته شده توسط
Alirezanet
مثلا توی بدنه 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 شماره جاري را گرفته و از حلقه خارج ميشود. پس از اين که مجددا کاربر کار را از سر گرفت، از همان شماره ادامه ميدهد
براي توقف کامل، همان سه مرحله اول کافي است
نقل قول: لغو و یا نگه داشتن عملیات در حال اجرا برنامه؟!
دوست عزيز شما چرا از Thread استفاده نميکنيد
فکر کنم همين گزينه ها رو داشته باشه
استانداردتر هم هست
نقل قول: لغو و یا نگه داشتن عملیات در حال اجرا برنامه؟!
Dim TRD As Threading.Thread
TRD.IsBackground = True
TRD.Start(PARAMETER)
برای توقف
TRD.Abort()
برای ادامه
TRD.Resume()