PDA

View Full Version : سوال: نمایش پیشرفت برنامه با دو وظیفه موازی



afshin62
دوشنبه 15 خرداد 1391, 15:05 عصر
من تازه شروع کردم تا از TPL استفاده کنم و سرعت اجرا رو بالا ببرم.
برای این کار دو تا task ساختم که بطور موازی بک متد رو که حدودا 4 دقیقه طول میکشه با پارامترهای مختلف اجرا کنه. برنامه درست کار می کنه و این قسمت مشکلی نداره.
مشکل فریز شدن فرم اصلی هست. من قبل از این از doevents برای حل این مشکل استفاده می کردم و progressbar را هم update می کردم.
ولی حالا من نمی تونم progressbar رو از thread دیگه آپدیت کنم. یک کم سرچ کردم و دیدم دو تا راه حل پیشنهاد شده. یکی backgroundworker component که من چون دو تا task دارم نشد ازش استفاده کنم. یکی دیگه استفاده از delegate و invoke بود. کدی که من دارم استفاده می کنم و از متدم هر دفعه اجرا می کنم.
Private Delegate Sub ProgressDelegate(ByVal Cnt As long)
Sub progressBarUp(ByVal CntAs Long)

If Me.InvokeRequired Then
'Dim deleg As New ProgressDelegate(AddressOf progressBarUp)
Me.BeginInvoke(New ProgressDelegate(AddressOf progressBarUp), New Object() {Cnt})

Return
Else
Progress.Visible = True
Progress.Value = Cnt
End If
End Sub
من progressBarUp رو از درون متدی که داره بطور موازی روی task های مختلف اجرا میشه کال میکنم ولی هیج اتفاقی نمیفته.
حالا چجوری می تونم پیشرفت رو نشون بدم و هم فرمم فریز نشه.
با تشکر

M.KH-SH
دوشنبه 15 خرداد 1391, 18:02 عصر
دوست عزیز یک سئوال ::: پیشرفت چیو میخوای نشون بدی؟

بر اساس شروع و پایان کارت معلومه میتونی از حلقه ها استفاده کنی و اگر هم همینجوری میخوای کار کنی از تایمر استفاده کن
اگه از پیشرفت دانلود و یا آپلود میخوای گزارش بدی اونم توابع مخصوص به خودشونو دارن که باید متغییر ها رو هندل کنی

afshin62
دوشنبه 15 خرداد 1391, 19:47 عصر
Ba arze mazerat az inke finglish minevisam. Inja font farsi ndaram

Man function ke daram chand ta nested for loop ke khaili tool mikeshe va mikham formam progress on ro neshoon bede
Vali choon man function ro be tore parallel ba estefade az task run mikonam nemidonam chejori form ro responsive negah daram va hamchenin progress bar ro update konam.

ba zam pozesh az finglishi

ba tashakor

afshin62
دوشنبه 15 خرداد 1391, 21:29 عصر
Ba tashakor moshkelam hal shod.
Faghat worker ro az form joda kardam va ona roye thread haye mokhtalef gozashtam va moshkel hal shod.

tooraj_azizi_1035
چهارشنبه 17 خرداد 1391, 17:16 عصر
سلام
این لینک ها خیلی مفیدند:
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

http://social.msdn.microsoft.com/Forums/zh/winforms/thread/5a38a2ef-d90b-4ca0-9e7a-729a24c6f2df