نقل قول: سوال در مورد تایمر.
interval رو روی 1000 بذار تا در یک ثانیه دستورات رو اجرا کنه
نقل قول: سوال در مورد تایمر.
سلام
نم خوام بحستونو خراب کنم فقط یه سوال کوچولو دارم
چرا وقتی من تایمر در برنامه ام ران می کنم ؛ برنامه از حالت پنهان (hide) خارج میشه
نقل قول: سوال در مورد تایمر.
سلام
موضوع جالب شد!
من دو تا تایمر با دو تا Counter گذاشتم، یکی با Interval 1، یکی با 10، جفتشون با یک سرعت بالا می رفتند!!!
کسی نمی دونه؟
نقل قول: سوال در مورد تایمر.
نقل قول:
interval رو روی 1000 بذار تا در یک ثانیه دستورات رو اجرا کنه
شما متوجه سوال شدی؟
نقل قول: سوال در مورد تایمر.
از لحاظ تئوریک اینطور هست و باید تو 1 ثانیه 1000 بار اجرا بشه ولی تو عمل نه چون برنامه یک Message Queue داره که ترد اصلی برنامه ( Main Thread ) به ترتیب به پیغام های داخل اون رسیدگی میکنه ، حالا بسته پیغام های منتظر داخل صف و Priority اون ترد و Time Sliceing پردازنده ، Main Thread ممکنه تو 1 ثانیه کل صف رو پردازش کنه یا تو n ثانیه ؛ حالا بماند که خود پلتفرم Net. هم تو این سرعت پائین نقش داره ( به دلیل وجود زبان میانی و ... ) !
اگر میخواین زمان بندی دقیقی داشته باشید باید از High Resolution Timer ها استفاده کنید .
نقل قول: سوال در مورد تایمر.
نقل قول:
نوشته شده توسط
mehran_sh_t
شما متوجه سوال شدی؟
اینجور نیست که در هر ثانیه 1000 بار اجرا بشه
اگر بذاری رو 1000 یعنی این که در 1000 میلی ثانیه یک بار اجرا بشه
نقل قول: سوال در مورد تایمر.
نقل قول:
interval رو روی 1000 بذار تا در یک ثانیه دستورات رو اجرا کنه
من میخوام بطور پیوسته حرکت کنه.اینطور که شما گفتی بعد از یک ثانیه 1000 پیکسل جلوتر ظاهر میشه.
نقل قول:
اینجور نیست که در هر ثانیه 1000 بار اجرا بشه
اگر بذاری رو 1000 یعنی این که در 1000 میلی ثانیه یک بار اجرا بشه
منم نگفتم میذارم روی هزار.گفتم میذارم روی 1 تا در ثانیه 1000 بار اجرا بشه.
در ضمن وقتی یک بازی اجرا میکنم(need for speed Hot Pursuit) و به ویندوز برمیگردم سرعتش بیشتر شده و انگار همون هزار بار در ثانیه س.
با تشکر.میشه یه مقدار در موردش توضیح بدین.
نقل قول: سوال در مورد تایمر.
اها، شرمنده متوجه نشدم
مشکل اینجاست که اون میزان دستوراتی که نوشتی نمیتونه در یک میلی ثانیه انجام بشه واسه همین زیاد طول می کشه
اگر می خوای واسه طراحی هایی مثل گیم استفاده کنی بهتره از موتور های گیم مثل agate که با opengl پیاده سازی شده و رایگان هم هست استفاده کنی
نقل قول: سوال در مورد تایمر.
میشه یکم در مورد agate توضیح بدی؟چی هست و با چه زبانی برنامه نویسی میشه و از کجا باید گیر آورد؟
با تشکر.:تشویق:
نقل قول: سوال در مورد تایمر.
نقل قول:
نوشته شده توسط
Padrone
اینجور نیست که در هر ثانیه 1000 بار اجرا بشه
اگر بذاری رو 1000 یعنی این که در 1000 میلی ثانیه یک بار اجرا بشه
اگه در هر ثانیه 1000 بار اجرا بشه
فکر کنم از CPU تون دود که چه عرض کنم اتیش بلند میشه:قهقهه::قهقهه::قهقهه::قه هه::قهقهه::قهقهه::قهقهه:
نقل قول: سوال در مورد تایمر.
لینکی که گذاشتین رو مطالعه کردم ولی چیزی نفهمیدم.میشه توضیح بدین؟
یعنی یک کنترل آمادست؟از کجا دانلود کنم؟یا تو چه فضای نامی هست؟ممنون میشم راهنمایی بفرمایین.
نقل قول: سوال در مورد تایمر.
خوشم میاد هر کس از راه میرسه پست میده.
همونی که آقای تاجیک نوشتن درسته.
علتش اینه که سیستم عامل ویندوز خودش تقریبا هر ۱۶ میلی ثانیه پیغام ها رو بررسی میکنه.(نمیدونم چرا ۱۶ ولی این رو قبلاً توی یک وبسایت خوندم/فکر میکنم MSDN)
و به همه اکیداً توصیه میشه که هرگز از تایمر استفاده نکنند مگر این که مطمئن باشن استادی که تمرین داده به اندازه کافی خر هست که مجبورشون کنه.
چون هیچگونه تضمینی برای درستی عملکرد.درستی interval (کم و زیاد شدن) و یا جلوگیری از دستکاری از بیرون برنامه وجود نداره.
راه درست همیشه استفاده از signal, wait ,mutex,monitor,semaphore , thread, join, process, shared memory, .... و این موضوعات هست.
نقل قول: سوال در مورد تایمر.
نقل قول:
راه درست همیشه استفاده از signal, wait ,mutex,monitor,semaphore , thread, join, process, shared memory, .... و این موضوعات هست.
اگه با اینا که گفتین آشنایی داشتم که به فکرم می رسید ازشون استفاده کنم!خواهش می کنم درباره شون یکم توضیح بدین.
من برای این که مانند تایمر بتوانم دستورات مشخصی را در هر لحظه اجرا کنم در حلقه ی While(True) از دستور
Thread.Sleep(1);
استفاده کردم ولی بقیه ی قسمت های برنامه از کار میفته و تا زمانی که تو حلقه ست نمیشه مثلا روی دکمه کلیک کرد یا در تکست باکس تایپ کرد.چیکار باید کرد؟
خیلی ممنون.
نقل قول: سوال در مورد تایمر.
نقل قول:
نوشته شده توسط
aliblue
اگه با اینا که گفتین آشنایی داشتم که به فکرم می رسید ازشون استفاده کنم!خواهش می کنم درباره شون یکم توضیح بدین.
من برای این که مانند تایمر بتوانم دستورات مشخصی را در هر لحظه اجرا کنم در حلقه ی While(True) از دستور
Thread.Sleep(1);
استفاده کردم ولی بقیه ی قسمت های برنامه از کار میفته و تا زمانی که تو حلقه ست نمیشه مثلا روی دکمه کلیک کرد یا در تکست باکس تایپ کرد.چیکار باید کرد؟
خیلی ممنون.
دوست عزیز شما با این کارتون میاین و سرباری می شین روی پروسه برنامه و از اونجایی که شما توقف دادین این دستور روی Thread اصلی برنامه اجرا می شه و کلا برنامه قفل می شه . برای رهایی از این مشکل بهتر هست شما با بحث Thread ها آشنا بشین یا روال برنامه رو در یه Thread اجرا کنید یا روال Timer رو در یه Thread Timer اجرا کنید .
باتشکر احسان
نقل قول: سوال در مورد تایمر.
دوست عزیز به شما و دیگر دوستان پیشنهاد می کنم مقاله زیبای جناب شاه محمدی رو مطالعه کنید . در این مقاله این مشکلات با راه حل شرح داده شده است .
مقاله آموزش Multi Threading (چندنخی) در Visual Basic.Net
باتشکر احسان