PDA

View Full Version : ساخت تایمر



Mohamad ghorbani
چهارشنبه 07 دی 1390, 17:51 عصر
سلام. من می خوام بدون استفاده از تایمر و با استفاده از حلقه یه تایمر بسازم:متفکر:
یه راهنمایی می کنید؟
با تشکر

ho3ein.3ven
چهارشنبه 07 دی 1390, 18:12 عصر
سلام. من می خوام بدون استفاده از تایمر و با استفاده از حلقه یه تایمر بسازم:متفکر:
یه راهنمایی می کنید؟
با تشکر

سلام
ببین تو هر کاری هم بکنی نمیشه کاری کرد که مثل یک تایمر عمل کنه . حتی اگه از حلقه هم استفاده کنی بدون مکث اعمال میشه.
و اینطوری نمیشه هر 2 ثانیه یک بار دستورات اجرا بشه
ولی یه تکه کد نوشتم که کار تایمر رو می کنه.
Private Sub Command1_Click()
Static p As Integer
p = p + 2
Label1.Caption = p
If p > 50 Then Exit Sub
Call Command1_Click
End Sub

Mohamad ghorbani
چهارشنبه 07 دی 1390, 18:19 عصر
با تشکر. ولی این کدی که گذاشتین اصلا کار تایمر رو نمی کنه.
من می خوام لیبل هر 1 ثانیه یه بار مقدارش عوض شه.
ولی این اصلا نمیشه
هیچ وقفه ای صورت نمیگیره
من می خوام یه وقفه ایجاد شه.
با تشکر

Veteran
چهارشنبه 07 دی 1390, 18:45 عصر
ببین تو هر کاری هم بکنی نمیشه کاری کرد که مثل یک تایمر عمل کنه . حتی اگه از حلقه هم استفاده کنی بدون مکث اعمال میشه.
و اینطوری نمیشه هر 2 ثانیه یک بار دستورات اجرا بشه
با استفاده از sleep میشه مکث انداخت اما در موقعه ای که مکث کرده نمیتونی با برنامه کاربکنی

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

بر حس میلی ثانیه هست
برای مثلا 2 ثانیه میشه

sleep 2000

vb6_man
چهارشنبه 07 دی 1390, 20:00 عصر
و اما اشکال این روش
تابع Sleep یکی از دستورات API هست که ایجاد وقفه می کنه
اما
در زمان وقفه، فرم کاملا Freez می شه
یعنی هنگ میکنه ( البته به نسبت زیادی زمان این هنگ شدن بیشتره )
ولی در Timer این اتفاق نمی افته حیتی اگه Interval روی 65000 باشه

واسه حل این مشکل 2 راه هست:
1. Timer رو به وسیله API ایجاد کنیم ( که خودش حلقه هم ایجاد می کنه )
2. از یه Sub دستی استفاده کنیم که من نمونش رو می ذارم


Sub PauSe(InterVal as String)

Dim CurrenT
CurrenT=Timer

Do While Timer-CurrenT < Val(InterVal)
DoEvents
Loop

End SUb



واسه صدا زدنش هم دیگه مشخصه:

PauSe 0.5

Veteran
چهارشنبه 07 دی 1390, 20:48 عصر
و اما اشکال این روش
تابع Sleep یکی از دستورات API هست که ایجاد وقفه می کنه
اما
در زمان وقفه، فرم کاملا Freez می شه


نگفتم که با این میتونی تایمر درست کنی
فقط گفتم که میشه با این مکث انداخت

===================
| خداییش دلت خوشه |
===================

M.T.P
پنج شنبه 08 دی 1390, 00:22 صبح
این نمونه با API هست. کدش هم زیاد نیست.