تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] كيف اوقف التايمر بعد تحديد الكل في listbox ?
#4
السلام عليكم و رحمة الله
اخي الكريم ابتعد عن استخدام التايمر و استخدم التقنيات الجديدة افضل لك
و احرص على ان تكون الاجراءات الخاصة بك من النوع غير المتزامن (اذا كان العدد الذي تريد ارساله كبير) حتى تتحاشى مشاكل التجميد في البرنامج
كمثال بسيط لك ضع ListBox و TextBox و Button و Progresspar
ثم جرب هذا الكود و انتبه لسلاسة سير العملية باستخدام  Async Wait Task
كود النموذج كامل
PHP كود :
Public Class Form4
    Private Sub Form4_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        For i 
1 To 100
            ListBox1
.Items.Add("emad" i)
 
       Next
    End Sub

    Structure Mystruct
        Shared room 
As String "Room"
 
       Shared mspv1 111
        Shared mspv2 
222
        Shared mspv3 
333
        Shared mspv4 
444
        Shared mspv5 
555
        Shared colors 
"Red"
 
   End Structure

    Private Async Sub BtnSend_Click
(sender As ObjectAs EventArgsHandles BtnSend.Click
        TextBox1
.Clear()
 
       If ListBox1.Items.Count 0 Then
            ProgressBar1
.Maximum ListBox1.Items.Count 1
            For x 
As Integer 0 To ListBox1.Items.Count 1
                Await 
(send(0))
 
               ListBox1.Items.RemoveAt(0)
 
               ListBox1.Refresh()
 
               ProgressBar1.Value x
                
'هذا الكود لاظهار التقدم بالنسبة المئوية
                Dim percent As Integer = CInt((CDbl(ProgressBar1.Value - ProgressBar1.Minimum) / CDbl(ProgressBar1.Maximum - ProgressBar1.Minimum)) * 100)
                Using gr As Graphics = ProgressBar1.CreateGraphics()
                    gr.DrawString(percent.ToString() + "%", SystemFonts.DefaultFont, Brushes.Black, New PointF(ProgressBar1.Width / 2 - (gr.MeasureString(percent.ToString() + "%", SystemFonts.DefaultFont).Width / 2.0F), ProgressBar1.Height / 2 - (gr.MeasureString(percent.ToString() + "%", SystemFonts.DefaultFont).Height / 2.0F)))
                End Using
            Next
            BtnSend.Enabled = True

        Else
            TextBox1.Text = "<presence to='" & Mystruct.room & "
@conference.nimbuzz.com/imanking' type='unavailable'></presence>"
            ProgressBar1.Value = 0
        End If

    End Sub


    Private Async Function send(i As Integer) As Task
        Dim Sb As New List(Of String)
        Sb.Clear()
        Dim t As Task = Me.Invoke(Sub()
                                      BtnSend.Enabled = False
                                      Dim Str As String() = {"<message xmlns='
jabber:client' to='", Mystruct.room _
                                                               , "
@conference.nimbuzz.com/", ListBox1.Items(i).ToString, vbNewLine,
                                                               "'type='
chat' id='292'>", vbNewLine,
                                                               "<body>", vbNewLine, Mystruct.mspv1 & vbNewLine &
                                                               Mystruct.mspv2 & vbNewLine & Mystruct.mspv3 & vbNewLine &
                                                               Mystruct.mspv4 & vbNewLine & Mystruct.mspv5, vbNewLine &
                                                               "</body>", vbNewLine, "<html xmlns='
http://jabber.org/protocol/xhtml-im'>", vbNewLine,
 
                                                              "<body xmlns='http://www.w3.org/1999/xhtml'>"vbNewLine,
 
                                                              "<p>"vbNewLine"<em>"vbNewLine"false"vbNewLine,
 
                                                              "</em>"vbNewLine"<strong>"vbNewLine"true"vbNewLine,
 
                                                              "</strong>"vbNewLine"<span style='" Mystruct.colors "'/>"vbNewLine,
 
                                                              "</p>"vbNewLine"</body>"vbNewLine"</html>"vbNewLine,
 
                                                              "</message>"vbNewLine"***********************************"}

 
                                     Sb.Add(String.Concat(Str))

 
                                     For Each Instr As String In Sb
                                          TextBox1
.AppendText(Instr Environment.NewLine)
 
                                     Next

                                  End Sub
)
 
       Await Task.Delay(100)

 
   End Function
End Class 

حدد المدة التي تريدها فاصل بين كل ارسال في الخاصية  Await Task.Delay

بالتوفيق
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}
تم الشكر بواسطة: e-coder , e-coder


الردود في هذا الموضوع
RE: كيف اوقف التايمر بعد تحديد الكل في listbox ? - بواسطة ابو ليلى - 28-07-17, 01:14 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيف يتم عرض جدول من قائمة listbox في داتاقريدفيو ahmedfa71 5 878 04-09-25, 02:59 PM
آخر رد: ahmedfa71
  [VB.NET] كيف أجعل الأداة Listbox تعرض عمودين بدل عمود واحد mmaalmesry 6 484 15-10-24, 11:05 AM
آخر رد: Taha Okla
  أريد تحديد صلاحيات المستخدمين عن طريق حقل في جدول قاعدة البيانات F.H.M 0 328 12-09-24, 06:29 PM
آخر رد: F.H.M
  معرفة حجم ملف PDF تم تحديد مساره modymody300894 1 299 10-08-24, 03:35 PM
آخر رد: ميدو الفنان
  مشكلة في التايمر assuhimi 3 404 23-03-24, 04:51 PM
آخر رد: Taha Okla
  [VB.NET] listbox تلوين عدد من هذه الأسماء mervandz 3 751 18-11-23, 01:35 AM
آخر رد: sniper2030
Information [VB.NET] حذف كل العناصر التي تاتي بعد عنصر الذي احدده listbox mervandz 3 648 10-11-23, 07:12 PM
آخر رد: justforit
  تحديد موقع ملف user.config واعدة توجيهه لموقع آخر Mohammed Nafa 3 749 07-11-23, 10:12 PM
آخر رد: Mohammed Nafa
  كيف الحصول على قيمة الخلية بعد تحديد الصف في datagridview؟ hazim1 2 887 06-08-23, 01:12 AM
آخر رد: hazim1
  تحديد مسار البرنامج atefkhalf2004 12 5,830 24-06-23, 10:28 PM
آخر رد: سعود

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


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