PDA

View Full Version : سوال: مشکل در مقدار دهی background Worker به textbox در فرم



fotros67
یک شنبه 29 تیر 1393, 12:12 عصر
با سلام خدمت اساتید محترم
من یک برنامه نوشته ام که با استفاده از background worker و تایمر اطلاعات موجود در textbox های فرم را بروز رسانی می کنم.
وقتی تایمر اجرا می شود مقدار دهی ها صورت میگیرد اما مقادیر اشتباه وارد textbox ها می شود و در واقع مقادیر جا به جا هستند.
لطفا بنده را راهنمایی کنید
کد موجود در تابع elapse از تایمر اجرا شونده:


Protected Sub Timer_Elapsed(sender As Object, e As EventArgs) Handles Timer.Elapsed
Dim Con As String = ""
Dim Url As String = ""
Dim counter As Integer
Dim oop As New Functions
Dim dt As DataTable = oop.RetrieveSites
counter = 1
For i = 1 To 16 Step 8
Dim bw1 As New BGWorkers
Url = dt.Rows(counter - 1)(3).ToString
Con = dt.Rows(counter - 1)(4).ToString
Dim gp1 As GroupBox = DirectCast(Me.Controls.Find("GroupBox" + counter.ToString, False).FirstOrDefault(), GroupBox)
Dim txt1 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + i.ToString, False).FirstOrDefault(), TextBox)
Dim txt2 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 1).ToString, False).FirstOrDefault, TextBox)
Dim txt3 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 2).ToString, False).FirstOrDefault, TextBox)
Dim txt4 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 3).ToString, False).FirstOrDefault, TextBox)
Dim txt5 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 4).ToString, False).FirstOrDefault, TextBox)
Dim txt6 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 5).ToString, False).FirstOrDefault, TextBox)
Dim txt7 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 6).ToString, False).FirstOrDefault, TextBox)
Dim txt8 As TextBox = DirectCast(gp1.Controls.Find("TextBox" + (i + 7).ToString, False).FirstOrDefault, TextBox)
bw1.Main(txt1, txt2, txt3, txt4, txt5, txt6, txt7, txt8, Con, Url)
counter += 1
Next
End Sub

fotros67
یک شنبه 29 تیر 1393, 19:11 عصر
آقا کسی نیست یه راه حل به ما پیشنهاد بده؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
:ناراحت::ناراحت::ناراحت::نار حت::ناراحت::ناراحت::ناراحت:: اراحت::ناراحت::ناراحت:

fotros67
دوشنبه 30 تیر 1393, 00:08 صبح
دوستان خودم جواب را پیدا کردم.
مشکل در نداشتن تاخیر (delay) بود که باید در حلقه یک تاخیر 1 تا 2 ثانیه ای قرار دهیم.




For i = 1 To (ToolStripDropDownButton1.DropDownItems.Count * 8) Step 8
Dim bw1 As New BGWorkers
Url = dt.Rows(counter - 1)(3).ToString
Con = dt.Rows(counter - 1)(4).ToString
Dim GB1 As GroupBox = DirectCast(Me.Controls.Find("GroupBox" + counter.ToString, False).FirstOrDefault(), GroupBox)
Dim txt1 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + i.ToString, False).FirstOrDefault(), TextBox)
Dim txt2 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 1).ToString, False).FirstOrDefault, TextBox)
Dim txt3 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 2).ToString, False).FirstOrDefault, TextBox)
Dim txt4 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 3).ToString, False).FirstOrDefault, TextBox)
Dim txt5 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 4).ToString, False).FirstOrDefault, TextBox)
Dim txt6 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 5).ToString, False).FirstOrDefault, TextBox)
Dim txt7 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 6).ToString, False).FirstOrDefault, TextBox)
Dim txt8 As TextBox = DirectCast(GB1.Controls.Find("TextBox" + (i + 7).ToString, False).FirstOrDefault, TextBox)
bw1.Main(txt1, txt2, txt3, txt4, txt5, txt6, txt7, txt8, Con, Url)
counter += 1
Threading.Thread.Sleep(1000)
Next