منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مشكلة عدم دقة توقيت التايمر
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله وبركاته

عندي مشكله

عندما وضعت التايمر على 1000 يعني يعمل كل ثانيه
اجد بعد عدة ساعات عدم دقة الثوان
فهل هناك طريقه ادق من التايمر في العمل كل ثانية تماما ؟

وشكرا مقدما
إقتباس :اجد بعد عدة ساعات عدم دقة الثوان

فهل هناك طريقه ادق من التايمر في العمل كل ثانية تماما ؟

ممكن مزيد من توضيح المشكلة لو سمحت يعني ما هو الكود الموجود داخل التيمر وما هو الاختلاف الحاصل بالضبط 
لعل تجد المساعدة ان شاء الله
(17-04-21, 12:29 AM)أبو عبدالله الحلواني كتب : [ -> ]ممكن مزيد من توضيح المشكلة لو سمحت يعني ما هو الكود الموجود داخل التيمر وما هو الاختلاف الحاصل بالضبط 
لعل تجد المساعدة ان شاء الله

جزاك الله خير على التفاعل

هذا مثال
ضع اثنان لايبل وهذا الكود
PHP كود :
Public Class Form1

    Dim sw 
As New Stopwatch
    Dim n 
As Integer

    
Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load
        Timer1
.Interval 1000
        Timer1
.Start()
        
sw.Start()
    
End Sub

    
Private Sub Timer1_Tick(sender As ObjectAs EventArgsHandles Timer1.Tick
        n 
+= 1
        Label1
.Text n
        Label2
.Text sw.Elapsed.TotalSeconds
    End Sub

End 
Class 
ستلاحظ بعد وقت من الزمن اختلاف الارقام الظاهره في كل لايبل
بالرغم ان التايمر على 1000 يعني ثانية
إقتباس :ستلاحظ بعد وقت من الزمن اختلاف الارقام الظاهره في كل لايبل

بالرغم ان التايمر على 1000 يعني ثانية


المشكلة ليست في التيمر ولكن في الاستوبوتش فانه يظهر القيمة بالملي ثانية 
اكتب الكود بهذا الشكل وستري الفرق ان شاء الله

PHP كود :
Label2.Text CInt(sw.Elapsed.TotalSeconds
وهذا المرفق بعد التعديل
(17-04-21, 06:33 PM)أبو عبدالله الحلواني كتب : [ -> ]المشكلة ليست في التيمر ولكن في الاستوبوتش فانه يظهر القيمة بالملي ثانية 
اكتب الكود بهذا الشكل وستري الفرق ان شاء الله

PHP كود :
Label2.Text CInt(sw.Elapsed.TotalSeconds
وهذا المرفق بعد التعديل

اشكرك جدا على مشاركتك

انا عامل في الكود الذي عندي CInt ولكن أزلتها في المثال السابق ليتضح سبب عدم تساوي الثوان بعد مدة من خلال مراقبة الملي ثانية

المقصود بعد مدة من الوقت مع تجاهل الملي ثانية سترى ان هناك ثانية تم تجاوزها ثم بعد مدة ثانية يتم تجاوزها وهكذا

عندما يتم تشغيل الكود اصبحت النتيجة بعد 36 ثانية
Tiimer value: 37
StopWatch Value: 38
وبعد مده اصبحت النتيجه
Tiimer value: 197
StopWatch Value: 200

قم بتشغيل المرفق الذي ارفقتموه وانتظر بعد حوالي الدقيقة الى دقيقتين سترى ان الآرقام قد اختلفت ولم تعد متساوية

هذا ما قصدته

ولكم جزيل الشكر
إقتباس :قم بتشغيل المرفق الذي ارفقتموه وانتظر بعد حوالي الدقيقة الى دقيقتين سترى ان الآرقام قد اختلفت ولم تعد متساوية

هذا ما قصدته




كلام حضرتك صحيح!

ولكن طالما ان المشكلة لم تعد بالتيمر  وصار التيمر بريء من تهمة عدم الانضباط Big Grin

فلماذا لا تصرح بفكرتك لربما يكون الوصول اليها بطريقة اخري أقرب لما تريد 
ودع عنك عبأ مطابقة المختلفين  Rolleyes

أو حاول زيادة سرعة التيمر أيضا ليعمل بالملي ثانية وانتهي الأمر
(19-04-21, 08:01 PM)أبو عبدالله الحلواني كتب : [ -> ]كلام حضرتك صحيح!

ولكن طالما ان المشكلة لم تعد بالتيمر  وصار التيمر بريء من تهمة عدم الانضباط Big Grin

فلماذا لا تصرح بفكرتك لربما يكون الوصول اليها بطريقة اخري أقرب لما تريد 
ودع عنك عبأ مطابقة المختلفين  Rolleyes

أو حاول زيادة سرعة التيمر أيضا ليعمل بالملي ثانية وانتهي الأمر

اشكرك اخي ابو عبد الله

الفكرة هي إجراء قدح Trigger (ان صح التعبير) لحدث Event كل ثانية تماما وعدم تفويت أي ثانيه

قد يكون هناك أمر بديل عن استخدام التايمر متربط بساعة اللوحة الجهاز أو ساعة نظام التشغيل ولكن لا أعرف الطريقه

وشكرا لكم
السلام عليكم

اخي اعتقد ان اجراء حدث مهما كان صغير يستهلك جزء من الوقت واعتقد الفرق عندك في مرور الوقت هو اجراء الحدث حتى لو استهلك جزء من الف جزء من الثانية

والله أعلم

تقبل مروري
(20-04-21, 05:37 AM)messry كتب : [ -> ]السلام عليكم

اخي اعتقد ان اجراء حدث مهما كان صغير يستهلك جزء من الوقت واعتقد الفرق عندك في مرور الوقت هو اجراء الحدث حتى لو استهلك جزء من الف جزء من الثانية

والله أعلم

تقبل مروري

وعليكم السلام اخي messry

اشكرك اخي
طيب هل هناك حل لهذه المشكلة ؟
الصفحات : 1 2