تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] هل يمكن الاستغناء عن التايمر واستخدام شئ بديل يكون افضل ؟ !!
#1
السلام عليكم

طبعا كلنا نعلم ان التايمر يهنج البرنامج

خصوصا لو البرنامج كبير

فكيف يمكن الاستغناء عن التايمر

واستخدام شئ بديل

او فنكشن بديل يقوم بالمهمة بدل التايمر

مثال هذا الكود

كود :
Dim timercount As Integer = 0
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
timercount = timercount + 1
Dim Hrs As Integer
Dim Min As Integer
Dim Sec As Integer
Dim x = timercount.ToString
Sec = x Mod 60
Min = ((x - Sec) / 60) Mod 60
Hrs = ((x - (Sec + (Min * 60))) / 3600) Mod 60
txtRemaining.Text = String.Format("mg {0} hh, {1} mm, {2} ss", Hrs, Min, Sec)
End Sub

وجربت هذا الكود ولم ينفع

كود :
While True
Dim T As New Threading.Thread(sub()
timercount = timercount + 1
Dim x = timercount.ToString
Sec = x Mod 60
Min = ((x - Sec) / 60) Mod 60
Hrs = ((x - (Sec + (Min * 60))) / 3600) Mod 60
End Sub) With {.IsBackGround = true} : T.Start()
Thread.Sleep(Timer1.Interval)
End While

وجرب هذا ايضا ولم ينفع



فهل من مساعد ؟
الرد }}}
تم الشكر بواسطة:
#2
ماهو هدفك من استخدام التايمر؟
وضح بهدوء ماذا تريد أن تفعل تحديدا
الرد }}}
تم الشكر بواسطة: الماجيك مسعد
#3
هذا ما اريد
اقرا الكود

Dim timercount As Integer = 0
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
timercount = timercount + 1
Dim Hrs As Integer
Dim Min As Integer
Dim Sec As Integer
Dim x = timercount.ToString
Sec = x Mod 60
Min = ((x - Sec) / 60) Mod 60
Hrs = ((x - (Sec + (Min * 60))) / 3600) Mod 60
txtRemaining.Text = String.Format("mg {0} hh, {1} mm, {2} ss", Hrs, Min, Sec)
End Sub

الكود يحسب ويعرض مدة تشغيل البرنامج بالثانية والدقيقة والساعة

ولكن اريد تنفيذه بطريقة او باداة غير التايمر
لان البرنامج كبير ويقوم بتشنج البرنامج وتهنيجه
الرد }}}
تم الشكر بواسطة:
#4
طالما تريد تحديد مدة زمنية لشئ معين سواء فترة تشغيل برنامج او زمن تنفيذ كود معين الأفضل لك ان تستخدم StopWatch Class
وقي حالتك هنا تبدا StopWach عند بداية البرنامج ثم تقوم بإيقافه حين تريد و ليكن عند اغلاق الفورم مثلا
,وعلي ما اتذكر StopWatch كلاس به خاصية اسمها Elapsed  وهي عبارة عن TimeSpan التي ممكن من خلالها حساب المدة الزمنية

الكود التالي سوف يعطيك فكرة عن الاستخدام
PHP كود :
Dim sw As New Stopwatch()
sw.Start()
' do somthing
sw.Stop()

Dim ts As TimeSpan = sw.Elapsed
Dim result As String = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10) 
حل أخر و هنا يمكن الاستغناء عن التايمر و stopWatch أيضا

PHP كود :
Public Class Form1

    Private startData 
As DateTime Nothing
    Private endDate 
As DateTime Nothing

    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        startData 
DateTime.Now

    End Sub

    Private Sub Form1_FormClosing
(sender As ObjectAs FormClosingEventArgsHandles MyBase.FormClosing
        endDate 
DateTime.Now
        Dim ts 
As TimeSpan endDate startData
        Dim result 
As String String.Format("{0:00}:{1:00}:{2:00}.{3:00}"ts.Hoursts.Minutests.Secondsts.Milliseconds 10)
 
       MessageBox.Show(result)
 
   End Sub
End 
Class 
الرد }}}
تم الشكر بواسطة: العزابي
#5
(06-12-16, 04:32 AM)silverlight كتب : طالما تريد تحديد مدة زمنية لشئ معين سواء فترة تشغيل برنامج او زمن تنفيذ كود معين الأفضل لك ان تستخدم StopWatch Class
وقي حالتك هنا تبدا StopWach عند بداية البرنامج ثم تقوم بإيقافه حين تريد و ليكن عند اغلاق الفورم مثلا
,وعلي ما اتذكر StopWatch كلاس به خاصية اسمها Elapsed  وهي عبارة عن TimeSpan التي ممكن من خلالها حساب المدة الزمنية

الكود التالي سوف يعطيك فكرة عن الاستخدام
PHP كود :
Dim sw As New Stopwatch()
sw.Start()
' do somthing
sw.Stop()

Dim ts As TimeSpan = sw.Elapsed
Dim result As String = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10) 
حل أخر و هنا يمكن الاستغناء عن التايمر و stopWatch أيضا

PHP كود :
Public Class Form1

    Private startData 
As DateTime Nothing
    Private endDate 
As DateTime Nothing

    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        startData 
DateTime.Now

    End Sub

    Private Sub Form1_FormClosing
(sender As ObjectAs FormClosingEventArgsHandles MyBase.FormClosing
        endDate 
DateTime.Now
        Dim ts 
As TimeSpan endDate startData
        Dim result 
As String String.Format("{0:00}:{1:00}:{2:00}.{3:00}"ts.Hoursts.Minutests.Secondsts.Milliseconds 10)
 
       MessageBox.Show(result)
 
   End Sub
End 
Class 

السلام عليكم
حلول رائعة ولكن فى مشكلة انى اريد عرض الوقت فى البرنامج وليس عند انهاء البرنامج

يعنى يظهر الوقت فى البرنامج

وتفضل الثوانى والدقائق والساعات شغالة فى البرنامج وتظهر فى التكست بوكس

قمت باستخدام هذا الكود
[VBASIC]
Dim timercount As Integer = 0
Dim Hrs, Min, Sec As Integer
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
Dim T As New Threading.Thread(Sub()
timercount = timercount + 1
Dim x = timercount.ToString
Sec = x Mod 60
Min = ((x - Sec) / 60) Mod 60
Hrs = ((x - (Sec + (Min * 60))) / 3600) Mod 60
End Sub) With {.IsBackground = True} : T.Start()
txtRemaining.Text = String.Format("mg {0} hh, {1} mm, {2} ss", Hrs, Min, Sec)

End Sub[/VBASIC]

الانترفال 1000

كنت اعتقد ممكن عمل فنكشن مثلا التايمر يعمل كل وقت معين باستمرار مثل التايمر ويكون افضل

ولكن للاسف
الرد }}}
تم الشكر بواسطة:
#6
الفكرة التي تريدها ممكنة و لكنها تتطلب كتابة كلاس لذلك
وهنا عليك ان تخلط بين الفكرتين تستخدم Stopwatch.Ellapsed و تجمعها مع StartDate
الرد }}}
تم الشكر بواسطة: الماجيك مسعد
#7
(07-12-16, 02:01 AM)silverlight كتب : الفكرة التي تريدها ممكنة و لكنها تتطلب كتابة كلاس لذلك
وهنا عليك ان تخلط بين الفكرتين تستخدم Stopwatch.Ellapsed و تجمعها مع StartDate

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


PHP كود :
Public Class Form1

    Private Sub Form1_Load
(sender As ObjectAs EventArgsHandles MyBase.Load
        DoAction
(Label1)
 
   End Sub

    Private Sub DoAction
(ctrl As Control)
 
       Dim sw As Stopwatch Nothing
        Dim period 
As TimeSpan?
 
       Dim clock As Timer Nothing

        If ctrl IsNot Nothing AndAlso Not ctrl
.IsDisposed Then
            sw 
= New Stopwatch
            sw
.Start()
 
           clock = New Timer
            clock
.Enabled True
            AddHandler clock
.TickSub(oarg)
 
                                      Dim ts As TimeSpan = If(periodsw.Elapsed)
 
                                      ctrl.Text String.Format("{0:00}:{1:00}:{2:00}.{3:00}"ts.Hoursts.Minutests.Secondsts.Milliseconds 10)
 
                                  End Sub
        End 
If

 
   End Sub

End 
Class 


انا ليه قلت انت تحتاج كلاس
السبب حتي تستطيع ان تتحكم في التايمر حينما تريد بحيث تتمكن من إيقاف التايمر أو التخلص منه
لكن و بما انك تحتاج لكود وخلاص اعتقد الكود اعلاه سوف يكفي لحل مشكلتك
الرد }}}
تم الشكر بواسطة: zinom , Anas Mahmoud


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Exclamation [سؤال] كيف يمكن الغاء السوال عند الكتابة على ملف موجود dell 0 19 اليوم, 01:23 AM
آخر رد: dell
  مشكلة في التايمر assuhimi 2 27 أمس, 10:55 PM
آخر رد: assuhimi
  [VB.NET] السلام عليكم ممكن مساعدة اخوان احتاج يكون تسجيل الدخول textbox1 + textbox2 Coder_iraqii 4 398 18-12-23, 06:46 PM
آخر رد: Kamil
  [VB.NET] كيف يمكن إخفاء ظهور الشاشة السوداء فى الـــ console AmeenRashed 2 310 15-11-23, 03:51 PM
آخر رد: justforit
  ما أسرع استضافة يمكن رفع المشروع عليها ؟ hazim1 0 194 03-10-23, 08:55 AM
آخر رد: hazim1
  كيف يمكن تأخير الـSplash Screen حتى يتم تحميل الأدوات بالكامل؟ hazim1 0 267 28-09-23, 08:23 AM
آخر رد: hazim1
  هل يمكن نسخ احتياطي لأسماء الButtons ؟ hazim1 2 234 21-09-23, 07:32 PM
آخر رد: hazim1
  هل يمكن عد الصفوف التالية للصف المُحدد في Datagridview ؟ hazim1 1 458 17-07-23, 09:04 PM
آخر رد: mrfenix93
Rainbow [كود] النص المكتوب يكون على شكل وميض او تغير في الالوان محمد مسافر 1 456 13-05-23, 01:30 AM
آخر رد: عبدالله الدوسري
  [VB.NET] افضل انواع الخط لفاتورة المبيعات8c محمد بوقزاحة 2 400 09-05-23, 08:31 PM
آخر رد: محمد بوقزاحة

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


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