تقييم الموضوع :
  • 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
الف شكر الك انت اروع شخص عرفته بحياتي وربي بدعيلك بكل صلاتي
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  حل مشكلة الفاصلة الرقمية لحقل العملة عبدالكريم برشدان 1 106 20-01-22, 09:18 PM
آخر رد: ابراهيم ايبو
  مشكلة كل ماأعرض الصور يتم عرض الصور التي قبلها دون افراغ listview ماهو السبب cordava 1 199 19-01-22, 01:37 AM
آخر رد: رضوان الجماعي
Lightbulb [VB.NET] الرجاء المساعدة أخوتي عندي مشكلة DATA_GRID_VIEW RADOS 4 276 19-01-22, 12:41 AM
آخر رد: رضوان الجماعي
  مشكلة في توليد arabic qr code osmana2005 8 5,556 15-01-22, 02:59 PM
آخر رد: sh.alq
  [VB.NET] مشكلة لم استطع اضافة print form للفيجوال 2019 ولا 2022 bilgacim 0 124 10-01-22, 10:24 PM
آخر رد: bilgacim
  مشكلة في ترقيم الصور cordava 0 218 21-12-21, 09:07 AM
آخر رد: cordava
Photo مشكلة حفظ الصور في مجلد cordava 3 337 18-12-21, 10:07 PM
آخر رد: ابراهيم ايبو
  [سؤال] مشكلة في screenshot Hatem Zahran 2 333 30-11-21, 09:44 PM
آخر رد: Hatem Zahran
  [سؤال] مشكلة اضافة نص و صورة ادخل الاداء RichTextBox alims 10 604 24-11-21, 02:01 PM
آخر رد: alims
  [SQL] مشكلة بطئ سرعة البرنامج المتصل بقاعدة بيانات على النت mmaalmesry 4 563 24-11-21, 12:23 PM
آخر رد: mmaalmesry

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


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