تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مشكلة بسيطة جداً timer
#1
سلام عليكم
واجهتني مشكلة تهنيج البرنامج
عند تشغيل تايمر لتنفيذ الكود
الرجاء مساعدتني عند تشغيل تايمر
مايهنج البرنامج
بالاضافة الي
ProgressBar1 

لا اريد ان يمشي بسرعة ولكن ببطء
وبعد الانتهاء يتم توقف  timer
تفضلوا الكود الموجود في timer
كود :
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
       Me.ProgressBar1.Value = 0
       Dim strArray As String() = Me.id.Text.Split(New Char() {"#"c})
       Me.ProgressBar1.Maximum = strArray.Length
       Dim i As Integer = 0
       Do While (i <= strArray.GetUpperBound(0))
           Me.emad1.Send(String.Concat(New String() {"<iq xmlns='jabber:client' to='", Me.room.Text, "@conference.nimbuzz.com' type='set' id='353'><query xmlns='http://jabber.org/protocol/muc#admin'><item affiliation='member' jid='", strArray(i), "@nimbuzz.com' /></query></iq>"}))
           Me.ProgressBar1.Value += 1
           i += 1
       Loop
   End Sub
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم

جرب استخدام الأداة BackgroundWorker بإضافتها للفورم وهذا الكود
كود :
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
   BackgroundWorker1.RunWorkerAsync()
   Button1.Enabled = False

End Sub
كود :
Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
   Dim strArray As String() = Me.id.Text.Split(New Char() {"#"c})
   Dim i As Integer
   For i = 0 To strArray.Count - 1
       Me.emad1.Send(String.Concat(New String() {"<iq xmlns='jabber:client' to='", Me.room.Text, "@conference.nimbuzz.com' type='set' id='353'><query xmlns='http://jabber.org/protocol/muc#admin'><item affiliation='member' jid='", strArray(i), "@nimbuzz.com' /></query></iq>"}))
       Threading.Thread.Sleep(1000)
       Me.ProgressBar1.Invoke(Sub()
                                  Me.ProgressBar1.Value = ((i + 1) / strArray.Count) * 100
                              End Sub)
   Next
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
   Button1.Enabled = True
End Sub

وتستطيع الانتظار بتغيير القيمة في السطر التالي (1000=ثانية واحدة)
كود :
Threading.Thread.Sleep(1000)

مساعدتي هي صدقة لوجه الله تعالى
الرد }}}
تم الشكر بواسطة: 3asfa~mdmra , 3asfa~mdmra
#3
اخي يسلموا ايدك ولكن طلب صغير اخر اريد تطبيق ماذكرتة في الكود اعلا ع هذا الكود
كود :
Jids = txtids.Text.Split("#")
       For i = 0 To Jids.Length - 1
           For Each item As String In ListBox1.Items
               emad1(i).Send("<presence to='" & item & "@nimbuzz.com' type='subscribe'/>")
           Next
       Next
الكود اعلا هوا كتالي
كود :
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
       Dim strArray As String() = Me.id.Text.Split(New Char() {"#"c})
       Dim i As Integer
       For i = 0 To strArray.Count - 1
           Me.emad1.Send(String.Concat(New String() {"<iq xmlns='jabber:client' to='", Me.room.Text, "@conference.nimbuzz.com' type='set' id='353'><query xmlns='http://jabber.org/protocol/muc#admin'><item affiliation='member' jid='", strArray(i), "@nimbuzz.com' /></query></iq>"}))
           Threading.Thread.Sleep(1000)
           Me.GenesisProgressBar1.Invoke(Sub()
                                             Me.GenesisProgressBar1.Value = ((i + 1) / strArray.Count) * 100
                                         End Sub)
       Next
   End Sub
الرد }}}
تم الشكر بواسطة:
#4
تفضل الكود

كود :
Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    Jids = txtids.Text.Split("#")
    Dim i, j As Integer
    For i = 0 To Jids.Length - 1
        For j = 0 To ListBox1.Items.Count - 1
            emad1(i).Send("<presence to='" & ListBox1.Items(j) & "@nimbuzz.com' type='subscribe'/>")

            Threading.Thread.Sleep(1000)

            Dim a As Integer = (i + j)
            Dim b As Integer = (ListBox1.Items.Count + Jids.Length)
            Me.ProgressBar1.Invoke(Sub()
                                       Me.ProgressBar1.Value = ((a + 1) / (b)) * 100
                                   End Sub)

        Next
    Next
End Sub
الرد }}}
تم الشكر بواسطة: 3asfa~mdmra
#5
الف شكر الك انت اروع شخص عرفته بحياتي وربي بدعيلك بكل صلاتي
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Sad مشكلة تقريب الأرقام Sql Server waataanys 2 412 09-05-24, 03:52 PM
آخر رد: تركي الحلواني
  حل مشكلة في تصدير ملف كريستال ريبورت إلى PDF صالح عبدالله 7 170 02-05-24, 08:36 PM
آخر رد: صالح عبدالله
  مشكلة في ربط الفيجوال بيسك 2013 مع الاكسل صالح عبدالله 7 217 19-04-24, 09:13 AM
آخر رد: صالح عبدالله
  مشكلة فى Radiobutton عند وضع صورة فيه أبو جودة 3 133 15-04-24, 04:31 AM
آخر رد: Taha Okla
  [سؤال] لدي مشكلة عند قراءة ملف نصي من خلال أداة RichBox , حيث تظهر لي علامات استفهام Mostchar 2 174 07-04-24, 02:51 PM
آخر رد: تركي الحلواني
  مشكلة في التايمر assuhimi 3 151 23-03-24, 04:51 PM
آخر رد: Taha Okla
  [سؤال] مشكلة اتصال مفتوح dell 2 202 12-03-24, 09:46 PM
آخر رد: dell
  مشكلة عند نقل البرنامج من فيجوال 2013 الى فيجوال 2017 strongriseman 5 191 12-03-24, 10:37 AM
آخر رد: strongriseman
  مشكلة فى جمع عمود فى داتا جريد فيو احمد خطاب 3 198 06-03-24, 07:49 PM
آخر رد: احمد خطاب
Photo [VB.NET] مشكلة في شكل الفورم abuyazan 5 343 27-02-24, 09:38 PM
آخر رد: aljzazy

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم