View Full Version : سوال: معادل Delay پاسكال در VB ???
Alisalari
پنج شنبه 28 شهریور 1387, 20:38 عصر
سلام معادل تابع Delay در پاسكال كه موجب توقف يك رخداد به مدت چند ميلي ثانيه ي دلخواه ميشد ، توي VB چيه ؟
ممنونم:خجالت:
r0ot$harp
پنج شنبه 28 شهریور 1387, 20:55 عصر
فکر می کنم منظورتون این باشه ؟
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
باتشکر احسان
Alisalari
پنج شنبه 28 شهریور 1387, 21:10 عصر
فکر می کنم منظورتون این باشه ؟
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
باتشکر احسان
ممنونم احسان ، چيز ديگه اي غير از اين وجود نداره ؟ :لبخندساده:
xxxxx_xxxxx
پنج شنبه 28 شهریور 1387, 21:31 عصر
سلام.
گرچه استفاده از تابع sleep میتونه راحت ترین و سریعترین روش باشه. که معمولاً همه هم از همین تابع استفاده می کنند.
ولی یه عیبی که داره اینه مثل یه حلقه عمل می کنه یعنی اگه شما یک ثانیه می خواید وقفه ایجاد کنید فرقی نمی کنه که یه حلقه الکی بزاری تا به مدت یه ثانیه دور بزنه یا از sleep استفاده کنید.
منظورم اینه که به هر حال در هر دو این حالات cpu در اختیار برنامه می مونه تا وقفه به اتمام برسه و شما تو اون مدت هیچ کاری نمی تونید انجام بدید.
ولی این قطعه کدی که میزارم اینطوری نیست. در واقع همون تایمر هست.
به کد نگاه کنید:
Sub Pause(interval)
c = Timer
Do While Timer - c < Val(interval)
DoEvents
Loop
End Sub
Private Sub Command1_Click()
For i = 1 To 100
Label1.Caption = i
Pause (1)
Next i
End Sub
روی فرم فقط یه label بزارید با یک command
باز اینجا حداقل زمان وقفه می تونه یک ثانیه باشه. که عیبش همینه.
ولی در آخر باز همون تابع sleep هست که پیشنهاد میشه.
sohrab o
جمعه 29 شهریور 1387, 01:15 صبح
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Function Delay(Time As Long) As String
Sleep Time * 1000
End Function
vcldeveloper
جمعه 29 شهریور 1387, 01:25 صبح
لی یه عیبی که داره اینه مثل یه حلقه عمل می کنه یعنی اگه شما یک ثانیه می خواید وقفه ایجاد کنید فرقی نمی کنه که یه حلقه الکی بزاری تا به مدت یه ثانیه دور بزنه یا از sleep استفاده کنید.
منظورم اینه که به هر حال در هر دو این حالات cpu در اختیار برنامه می مونه تا وقفه به اتمام برسه و شما تو اون مدت هیچ کاری نمی تونید انجام بدید.
اصلا اینطور نیست. تابع Sleep یک تابع API ویندوز هست، و ظیفه آن هم این هست که به سیستم عامل میگه Thread فعلی را به مدت زمانی که مشخص شده، در حالت Idle قرار بده، یعنی وقتی از این تابع استفاده می کنید، سیستم عامل اولیت Thread فعلی شما را به پایین ترین حد موجود کاهش میده، در نتیجه تمام Threadهای دیگه که در صف Threadهای ویندوز برای اجرا قرار دارند، بالاتر از Thread شما قرار می گیرند و در CPU اجرا میشند. هر Process حداقل یک Thread اصلی داره، و میتونه چندین Thread فرعی داشته باشه. با توجه به اینکه اینجا بحثی از Multi-threading نشده، فرض این هست که شما فقط یک Thread دارید، و آن Thread اصلی برنامه شما ست، پس اجرای Sleep در این Thread باعث Idle شدن کل Process شما میشه.
اگر بخوایم ساده اش کنیم؛ با اجرای Sleep، روند اجرای برنامه شما تا زمان مشخص متوقف میشه، و CPU در اختیار برنامه های دیگه قرار میگیره. در نتیجه اگر از Sleep در یک برنامه Single-threaded (تک رشته ایی) استفاده بشه، کل برنامه تا زمان مشخص شده، حالت Freeze شده پیدا میکنه، چون هیچکدام از پردازش های مربوط به عملیات برنامه یا بروزرسانی رابط کاربر آن انجام نمیشه.
وقتی از DoEvents استفاده می کنید، در واقع برنامه را Idle نمی کنید، بلکه به برنامه میگید در طول زمان سپری شده فقط یک کار انجام بده؛ پردازش پیام های موجود در صف پیام ها. به این ترتیب عملیات مثل بروزرسانی رابط کاربر انجام میشه، و برنامه حالت Freeze شده پیدا نمیکنه، ولی کار خاصی هم انجام نمیده.
Did_Taze
جمعه 29 شهریور 1387, 01:57 صبح
سوال شما کمی مورد بحث است . اصل چرا نیاز دارید که سیستم شما کمی کند کار کند . آیا میخوهد برنامه شما کند کار کند تا اتفاق خاصی رخ بدهد . موضوع را کاملا بیان کنید تا دوستان جوابهای متنوعی به شما دهند . طرح سوال از نظر من ناقص است و این عمل به طرق مختلف قابل انجام است که برای دلایل مختلف حالتهای مختلف قابل استفاده میباشد
r0ot$harp
جمعه 29 شهریور 1387, 02:11 صبح
سوال شما کمی مورد بحث است . اصل چرا نیاز دارید که سیستم شما کمی کند کار کند . آیا میخوهد برنامه شما کند کار کند تا اتفاق خاصی رخ بدهد . موضوع را کاملا بیان کنید تا دوستان جوابهای متنوعی به شما دهند . طرح سوال از نظر من ناقص است و این عمل به طرق مختلف قابل انجام است که برای دلایل مختلف حالتهای مختلف قابل استفاده میباشد
دوست عزیز من اصلا متوجه نمی شم کی گفت که برنامه ای می خواد که سرعت رو بگیره ؟ و کی گفت برنامه ای می خواد که کند کار کنه ؟ :متعجب::متعجب::متعجب::متعجب:: تفکر::متفکر::متفکر::متفکر:
باتشکر احسان
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.