نمایش نتایج 1 تا 10 از 10

نام تاپیک: نحوه کار با timer ها در vb.net

  1. #1

    نحوه کار با timer ها در vb.net

    با سلام
    دوستان من چه جوری می تونم از تایمر ها در vb استفاده کنم؟
    در حقیقت می خوام زمان طی شده در ابتدا و انتهای یک فرایند رو اندازه گیری کنم مثلا بینم یک عملیات ضرب چقدر زمان می گیره؟
    از چه تابعی باید استفاده کنم؟
    ممنون می شم اگه یک sample برام بگزارید.
    با تشکر

  2. #2
    کاربر دائمی آواتار saeed_rezaei
    تاریخ عضویت
    آبان 1385
    محل زندگی
    ایلام
    پست
    430
    روش استفاده از تایمر به این صورت هست.
    یه تایمر می اندازی روی فرمت
    در خاصیت Interval بر حسب میلی ثانیه، زمانی رو مشخص می کنی که می خوای کدهات اجرا بشن. دقت کنید که هر 1000 میلی ثانیه برابر با یک ثانیه هست. پس اگر بخواید هر یک 5 ثانیه کدهاتون اجرا بشن باید عدد 5000 رو وارد کنید.
    روی تایمر کلیک کرده و در پنجره کد، در تابع tick کدهایی رو که قصد تکرارشون رو داریم رو مشخص می کنیم.
    خاصیت enabled تایمر به صورت پیش فرض false هست. در زمان اجرای برنامه در هر زمان که این مقدار true بشه، برنامه در زمان مشخص شده کدهای شما رو به تکرار اجرا می کنه.
    این وضعیت تا زمانی که enabled رو false نکنی ادامه دارد.

    اما برای این مشکل شما، می شه یه متغیر سراسر یا استاتیک تعریف کرد. مقدار اولیش صفره هست. تایمر رو تنظیم کنید روی 1000 میلی ثانیه و برای تابع tick کدی بنویسید که در هر بار یه مقدار به متغیرتون اضافه کنه. سپس به محض شروع فرآیند، تایمر رو هم فعال کنید و به محض پایان فرایند، تایمر رو غیر فعال.
    در نهایت با بررسی مقدار متغیری که تعریف کرده اید می تونید متوجه شید که چند ثانیه به طول انجامیده است.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1385
    محل زندگی
    مشهد
    سن
    38
    پست
    449
    با کد نویسی هم اینطوریه :

    Public
    Class Form1
    FriendWithEvents t AsNew System.Windows.Forms.Timer
    Dim count AsInteger = 0
    PrivateSub Form1_FormClosed(ByVal sender AsObject, ByVal e As System.Windows.Forms.FormClosedEventArgs) HandlesMe.FormClosed
    MsgBox(
    "total life : " & count & " MS")
    EndSub
    PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
    t.Interval = 1
    t.Enabled =
    True
    EndSub
    PrivateSub t_Tick(ByVal sender AsObject, ByVal e As System.EventArgs) Handles t.Tick
    count += 1
    EndSub
    End
    Class

  4. #4
    کاربر دائمی آواتار MH2538
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    No Man Land
    پست
    537
    سلام
    دوست عزیز
    1 - عمل ضرب در در حالت عادی در حد چند کلاک بیشتر از سی پی یو وقت نمی گیرد. (یعنی اصلاً به ثانیه نمی رسد)
    2- اگر قصد داری مدت زمان انجام یک تابع یا یک رویه رو محاسبه کنی نیازی به تایمر و ایجاد سربار نداری.
    شما می تونی قبل از اجرای تابع زمان سیستم رو محاسبه کرده و در زمان پایان تابع نیز همین کار رو بکنید.
    تفاضل این دو مقدار مدت زیمان لازم برای اجرای تابع شماست.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آبان 1385
    محل زندگی
    مشهد
    سن
    38
    پست
    449
    نقل قول نوشته شده توسط MH2538 مشاهده تاپیک
    2- اگر قصد داری مدت زمان انجام یک تابع یا یک رویه رو محاسبه کنی نیازی به تایمر و ایجاد سربار نداری.
    شما می تونی قبل از اجرای تابع زمان سیستم رو محاسبه کرده و در زمان پایان تابع نیز همین کار رو بکنید.
    تفاضل این دو مقدار مدت زیمان لازم برای اجرای تابع شماست.
    درسته راه دوم بسیار بهتره

  6. #6
    کاربر دائمی آواتار saeed_rezaei
    تاریخ عضویت
    آبان 1385
    محل زندگی
    ایلام
    پست
    430
    گرفتن زمان آغاز و پایان از روی ساعت سیستم کار بهتری هست. اما این نکته رو هم باید توجه کنید که ممکنه در طول زمان اجرای یک فرایند به دلایلی (که ذکرشون لازم نیست) ساعت سیستم تغییر کنه.

  7. #7
    ساعت سیستم تغییر نمیکنه ولی ممکنه همون لحظه سیستم عامل درگیر کار دیگه ای باشه و اجرا دستور بیش از اونی که باید طول بکشه و زمان واقعی رو نشه درست بدست آورد

  8. #8
    کاربر دائمی
    تاریخ عضویت
    آبان 1385
    محل زندگی
    مشهد
    سن
    38
    پست
    449
    نقل قول نوشته شده توسط saeed_rezaei مشاهده تاپیک
    گرفتن زمان آغاز و پایان از روی ساعت سیستم کار بهتری هست. اما این نکته رو هم باید توجه کنید که ممکنه در طول زمان اجرای یک فرایند به دلایلی (که ذکرشون لازم نیست) ساعت سیستم تغییر کنه.
    ساعت سیستم تغییر نمیکنه ولی ممکنه همون لحظه سیستم عامل درگیر کار دیگه ای باشه و اجرا دستور بیش از اونی که باید طول بکشه و زمان واقعی رو نشه درست بدست آورد
    اینایی که شما ذکر کردید صحیح ولی بستگی به پیاده ساز سیستم داره که براش کدوم فاکتور مهم تر باشه ؟ اگه سرعت اهمیت بیشتری داره میتونه ساعت سیستم رو بگیره ، اگر دقت اهمیت بیشتری داره میتونه از تایمر استفاده کنه و حتی میتونه از تلفیقی از این 2 ترفند استفاده کنه (بخصوص اگر پردازشها سنگین باشه و زمان بیش از 30 ثانیه سپری بشه و دقت در حد میلی سانیه هم خیلی اهمیت نداشته باشه)

  9. #9

    Smile StopWatch چیزیست که شما می خواهید!

    سلام دوستان:
    روش های ذکر شده کاملا درسته ولی NET Framework این کارو براتون کرده با کلاس StopWatch
    دیگر به کد نویسی نیازی نیست.
    Dim a As New Stopwatch()
    a.Start()
    For i As Int64 = 0 To 300000
    ''دستورات برنامه
    Next
    a.Stop()
    MsgBox(a.Elapsed.Milliseconds)
    می توانید از این مثال استفاده کنید.
    ------------------------------------------------
    زندگی یک بازی است؛مواظب باش قبل از بردن GameOver نشی!
    نتیجه اعمال ما در Part II بازی(آخرت) معلوم میشه.
    فایل های ضمیمه فایل های ضمیمه

  10. #10

    نقل قول: StopWatch چیزیست که شما می خواهید!

    سلام میخواستم ببینم میشه به تابع Timer_Tick یک مقدار ارسال کرد؟
    اگه میشه لطفا توضیح بدین

تاپیک های مشابه

  1. Timer
    نوشته شده توسط m_zi در بخش برنامه نویسی در 6 VB
    پاسخ: 6
    آخرین پست: سه شنبه 26 تیر 1386, 18:09 عصر
  2. چگونگی کار با timer
    نوشته شده توسط tc1000 در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: دوشنبه 03 اردیبهشت 1386, 20:32 عصر
  3. استفاده از timer
    نوشته شده توسط ITST-1 در بخش برنامه نویسی در 6 VB
    پاسخ: 0
    آخرین پست: دوشنبه 15 آبان 1385, 13:41 عصر
  4. ASP.NET Timer
    نوشته شده توسط cpuman20 در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: جمعه 04 مهر 1382, 21:59 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •