تقييم الموضوع :
  • 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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ايهما افضل C# أم VB.NET نور الدين وليد 16 8,671 24-11-20, 12:42 AM
آخر رد: جلال عبد الغنى
Question هل يمكن الحصول على نسخه برنامج كريستال ربيوت مع الكراك إن امكن ذلك ؟ Microformt 1 80 23-11-20, 08:09 PM
آخر رد: عبد العزيز البسكري
  [VB.NET] الاستغناء عن timer ميدو الفنان 5 248 22-11-20, 07:25 PM
آخر رد: ميدو الفنان
Question [VB.NET] كيف يمكن برمجة زر البحث بأبسط الطرق ؟؟ Microformt 0 101 13-11-20, 04:16 PM
آخر رد: Microformt
  [VB.NET] ماهو افضل برنامج للتشفير ميدو الفنان 4 305 21-10-20, 09:17 PM
آخر رد: ميدو الفنان
  كيف يمكن تلوين عدد من صفوف ListBox ؟ عبد الله 15 3,809 08-10-20, 01:24 PM
آخر رد: MetoDas
  [VB.NET] هل يمكن ارسال اشعار للمستخدمين ميدو الفنان 0 136 06-10-20, 05:49 PM
آخر رد: ميدو الفنان
  هل يمكن اضافة اشعار صوتى mostafa nada 3 331 22-09-20, 03:36 PM
آخر رد: mostafa nada
  [VB.NET] هل يوجد مشغل بديل لي vlc يقوم بتشغيل روابط بث مباشرة ميدو الفنان 1 184 16-09-20, 11:49 PM
آخر رد: ميدو الفنان
  [سؤال] هل يمكن تحويل مشروع الي ملف DLL saleh101 1 304 14-08-20, 02:14 AM
آخر رد: asemshahen5

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


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