تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مشكلة في Timer
#1
سلام عليكم

اخواني عند ماخصلت برنامج واصبح قابل لاستخدام
واجهتني مشكلة وهي انه البرنامج يتجمد عند
تشغيل التايمر يعني بهنج
الرجاء النظر للكود داخل الـTimer
والتعديل علية ليصبح Timer يشتغل بوقت محدد او
ايجاد حل لهذه المشكلة 
وشكراً

الرد }}}}
تم الشكر بواسطة:
#2
شوف اخي اذا كانت التايمر تعمل بشكل سليم لاكن تعلق البرنامج لفتره حتى تنفذ الكود المطلوب ثم يرجع البرنامج طبيعي 

استخدم BackgroundWorker فهاذا حل المشكله ان شاء الله

شكرا لك
لحمد لله رب العالمين على كل شي
الرد }}}}
تم الشكر بواسطة:
#3
جرب الامر Try
الرد }}}}
تم الشكر بواسطة:
#4
هذا سببه  الاستخدام الخاطي للتايمر
فكما هو واضح من الكود أنك تحاول ارسال بيانات معينة من خلال تايمر و ايضا من خلال Loop
منطقي جدا ان البرنامج يهنج
إما أن تستخدم threading أو تقوم بعمل SyncLock للتايمر حتي لا يتم تنفيذ الأوامر الموجودة داخل التايمر مرة واحدة
أعتقد أنك أيضا تحتاج أن  تتأكد من ان البيانات لا تساوي Nothing  قبل تنفيذ الأمر Send
واضح انك أيضا تحاول ارسال بيانات لموقع معين علي الانترنت
أعتقد انك محتاج تتأكد إنك متصل فعلا بالموقع او بالايميل او بالانترنت هذا  يحدده ما تقوم بتنفيذه من الكود من خلال Loop
الرد }}}}
تم الشكر بواسطة: العزابي
#5
كمثال توضيحي
افتح مشروع و ضع علي الفورم ليست بوكس و باتون و تايمر

و اكتب الكود بالشكل التالي
فقط شاهد ما يحدث عند الضغط علي الباتون لتشغيل التايمر

PHP كود :
Public Class Form1

    Private txt 
As String "vb4arab#data#ali#color#sunclock#ali#anystring#---------"
 
   Public lastTxt As Integer = -1
    Private txtLock 
As New Object
    Private strings
() As String = New String(100) {}
 
   Private Sub Timer1_Tick(sender As ObjectAs EventArgsHandles Timer1.Tick
        
' و ممكن تكتب الكود بين هاتين السطرين 
        SyncLock txtLock
            For Each s As String In txt.Split("#"c)
                lastTxt += 1
                If lastTxt < txt.Length Then
                    strings(lastTxt) = s
                End If
            Next
        End SyncLock
        For i = 0 To strings.Length - 1
            Dim current As String = strings(i)
            If Not String.IsNullOrEmpty(current) Then
                ListBox1.Items.Add(current)
            End If
        Next

        '' أو ممكن تستخدم التايمر نفسه 
        '
SyncLock Timer1
        
'    For Each s As String In txt.Split("#"c)
        ' 
       lastTxt += 1
        
'        If lastTxt < txt.Length Then
        ' 
           strings(lastTxt) = s
        
'        End If
        ' 
   Next
        
'End SyncLock
        '
For 0 To strings.Length 1
        
'    Dim current As String = strings(i)
        ' 
   If Not String.IsNullOrEmpty(currentThen
        
'        ListBox1.Items.Add(current)
        ' 
   End If
 
       'Next
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Timer1.Enabled = True
        Timer1.Interval = 1000
    End Sub
End Class 
الرد }}}}
تم الشكر بواسطة: العزابي
#6
السلام عليكم

كأبسط طريقة ممكن تستغل الأمر Application.DoEvents داخل كل حلقة تكرار مثل For أوDo وغيرها
كود :
For i = 0 To 10
    Application.DoEvents

    For Each s In o
        Application.DoEvents


    Next
Next
الرد }}}}
تم الشكر بواسطة:
#7
الأخ مساعدة

لو استخدمت SyncLock أو أي Lock أخر مناسب مع التايمر فهنا انت لا تحتاج نهائي ان تستخدم Application DoEvent و ربما لا تحتاج الي جملة Try أيضا
عموما هذا كله مرتبط بما تنفذه من كود داخل التايمر
بشكل عام الفكرة هنا انك لا تجعل التايمر يهنج البرنامج
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة في البحث بالتاريخ ____وايضا ____ بين تاريخين khaled12345 7 143 24-05-17, 03:55 PM
آخر رد: khaled12345
  [VB.NET] مشكلة في تعلم لغة vb.net anis789 3 112 24-05-17, 03:08 AM
آخر رد: silverlight
  مشكلة تفعيل ظهور checkbox في الفورم عامر الجبوري 4 87 21-05-17, 02:22 PM
آخر رد: alma2
  حل مشكلة " البرامج لا تعمل" عبدالرحمن المكاوي 4 89 20-05-17, 12:43 AM
آخر رد: عبدالرحمن المكاوي
  Timer ddemed 3 74 19-05-17, 11:15 PM
آخر رد: alma2
  مشكلة في كود البحث فرجاء المساعدة khaled12345 5 94 19-05-17, 03:50 PM
آخر رد: khaled12345
  [VB.NET] حل مشكلة الارقام في الاداة DataGridview أبو نقطة 2 57 19-05-17, 12:10 PM
آخر رد: alma2
  مشكلة في كود جملة ال insert khaled12345 2 64 14-05-17, 10:20 AM
آخر رد: khaled12345
  [VB.NET] مشكلة بسيطة في برنامج بسيط يعتمد على( Multi-Threading) أبو نقطة 5 141 13-05-17, 07:41 AM
آخر رد: أبو نقطة
  مشكلة فى المشروع MOSTAFA.KAMEL 9 214 06-05-17, 03:46 AM
آخر رد: zinom

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


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