View Full Version : کاربرد BackgroundWorker چیست ؟
milad.biroonvand
چهارشنبه 21 فروردین 1392, 23:36 عصر
سلام
کاربرد BackgroundWorker چیست ؟
erfan_urchin
پنج شنبه 22 فروردین 1392, 04:22 صبح
یکی از مهمترین فایده هاش اینه که اگه ما در برنامه ھا بخواھیم ھم کارھای محاسباتی سنگین و ھم حجم خود برنامه رو یکجا بر روی حافظه برنامه لود کنیم ، در نتیجه برنامه ھنگ میکنه و کاربر فکر می کنه برنامه خرابه و اشکال داره پس ما از back ground worker استفاده میکنیم
milad.biroonvand
پنج شنبه 22 فروردین 1392, 09:45 صبح
خیلی متشکرم ، اگر کسی تکه برنامه ای داره اینجا بزاره ، من یکی تو وب سایت code project دیدم ولی زیاد متوجه نشدم برا چی مناسبه
singel
پنج شنبه 22 فروردین 1392, 21:51 عصر
همانطور که دوست عزیزمان توضیح دادن ، برای جلوگیری از هنگ برنامه در زمانی که کار ها و محاسبات سنگین انجام می شود .
فقط کافیست کد های خود را در این قسمت بنویسد
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
کد های شما
End Sub
برای اجرا هم کافیست از این کد استفاده کنید
BackgroundWorker1.RunWorkerAsync()
milad.biroonvand
پنج شنبه 22 فروردین 1392, 22:23 عصر
بله من ، یک نمونه توی وب سایت کد پروجکت دیدم ، فقط می خوام بدونم ، وقتی من یک دستور رو در قسمت BackgroundWorker1_DoWor می نویسم باعث میشه که یک دستور طی بازهای زمانی اجرا بشه ، خوب حالا سوال من اینه که چطور وقتی دستوری رو در این قسمت می نویسیم سیستم هنگ نمیکنه ، چه اتفاقی می افته؟
tooraj_azizi_1035
جمعه 23 فروردین 1392, 11:59 صبح
سلام
علت اینه که متد DoWork روی یک تردی غیر از ترد UI اچرا میشه. پس از اتمام رویداد RunWorkerCompleted رخ میده.
مثال این لینک رو ببین:http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx
singel
جمعه 23 فروردین 1392, 13:46 عصر
دوست عزیز بهتره شما در مورد Thread یا همون " نخ " یک جستجو کنید تا بهتر متوجه بشید .
البته قبلا در این سایت بحث شده
milad.biroonvand
جمعه 23 فروردین 1392, 14:08 عصر
سلام
در مورد نخ ها بلدم . مر30
amirmms
جمعه 23 فروردین 1392, 16:17 عصر
سلام
من یه سری کد رو می خوام هر یک ثانیه یک بار اجرا بشه و این کدا یکم محاسبات سنگین داره و CPU زیادی مصرف میکنه
با این شی نشد.
میشه یکی کمک کنه ؟
singel
جمعه 23 فروردین 1392, 22:23 عصر
از یک تایمر و BackgroundWorker استفاده کنید
درBackgroundWorker کد هاتون را قرار بدید و در تایمر دستور اجرای BackgroundWorker
Timer1.Interval = 1000
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
BackgroundWorker1.RunWorkerAsync()
End Sub
اگر محاسباتتون سنگینه 1 ثانیه فکر نمیکنم زمان مناسبی باشه
amirmms
جمعه 23 فروردین 1392, 23:55 عصر
از یک تایمر و BackgroundWorker استفاده کنید
درBackgroundWorker کد هاتون را قرار بدید و در تایمر دستور اجرای BackgroundWorker
Timer1.Interval = 1000
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
BackgroundWorker1.RunWorkerAsync()
End Sub
اگر محاسباتتون سنگینه 1 ثانیه فکر نمیکنم زمان مناسبی باشه
همین کار رو کردم ولی اجرا نمیشه.
مقداری رو بر نمی گردونه توی تکست باکسام.
singel
شنبه 24 فروردین 1392, 00:25 صبح
مقدار دادن به تکست باکس
Delegate Sub UpdateTextBox_d(ByVal txt As String)
Public Sub update_textbox(ByVal txt As String)
TextBox1.Text = txt
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim up_txt As UpdateTextBox_d = New UpdateTextBox_d(AddressOf update_textbox)
Me.Invoke(up_txt, "مقدار خروجی")
End Sub
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.