PDA

نسخه کامل مشاهده نسخه کامل : .::::: فریز شدن برنامه :::::.



MichaelQwerty
30-01-2009, 19:27
سلام دوستان عزیز
سوال من اینه که اگر زمانی در برنامه از حلقه نا محدود استفاده کنیم یا برای مثال در برنامه از یه حلقه که از عدد یک تا چند هزار که در یک لیست باکس خروجیشو میده استفاده بشه فرم برنامه تا زمانی که کل عدد به خروجی نرفته به حالت فریز در میاد و نمی شه برنامه رو وسط کار بست یا جابجا کرد
کسی راهکاری داره که جلوی این حالت گرفت؟!:6:

Payman_62
30-01-2009, 20:29
سلام.
تو حلقت یه doevents بذار.

بهرام_62
30-01-2009, 20:30
سلام جیگر
راهکار پیشنهادی من که البته پیشرفته نیستش اینه:
فرض کن تو می خوای این کد رو اجرا کنی:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این کد ممکنه چندین ثانیه طول بکشه و در اون مدت فرمت فریز میشه
حالا میشه از یک تایمر استفاده کرد
الان وقت ندارم اگر کسی جوابت رو نداد به زودی میام تکمیل می کنم
ببخشید:41:

بهرام_62
30-01-2009, 21:25
سلام.
تو حلقت یه doevents بذار.

سلام میشه یک نمونه بزاری؟:10:
__________________-
فکر کنم جواب رو پیمان داد ولی منم جواب مبتدی خودم رو کامل کنم:31:

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


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این کد ممکنه چندین ثانیه طول بکشه و در اون مدت فرمت فریز میشه
حالا میشه از یک تایمر استفاده کرد
یک تایمر داریم به نام t
و از این کد استفاده می کنیم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینطوری فرم فریز نمیشه هر چند می دونم روش خنده داریه:27:
ولی فقط عیبش اینه که یکم بیشتر طول میکشه
البته به جاش توان لغو عملیات رو داریم:21:

MrJamshidy
31-01-2009, 14:47
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Payman_62
31-01-2009, 18:21
سلام.
بهرام روش استفاده از تایمر کاملا اشتباه است. اصلا منطقی نیست که حلقه ها رو داخل تایمر قرار بدیم. شاید لازم باشه حلقه فقط یه بار بچرخه ولی زیاد بچرخه. اون وقت تکلیف چیست؟ استفاده از تایمر باید به جاش باشه.
همون doevents روش حل این مشکله که جناب جمشیدی مثال خوبی زدن.

بهرام_62
31-01-2009, 19:53
اره می دونم روشم مبتدیه:31:
روش DoEvents صد در صد بهتره
چیزی مه من از DoEvents فهمیدم اینه که در هر بار که حلقه تکرار میشه DoEvents باعث میشه که یک وقفه در اجرای کد رخ بده و شاید برای یک زمان بسیار کوتاه به فرم هیچ فرمانی ارسال نمیشه
البته مطمئن نیستم همین باشه:46:
اما کار مبتدیانه ای که من کردم این بود که هر 50 بار تکرار حلقه یک صدم ثانیه به برنامه استراحت می دادم:21:
در کل روش من در آوردیی بود:27:

MichaelQwerty
31-01-2009, 20:37
سلام به همه
متشکرم
آقا بهرام درسته که روشت کاربرد نیست ولی یه ابتکار جدیده

Payman_62
01-02-2009, 01:57
سلام.
کار doevents اینه که به برنامه اجازه میده به قسمت های دیگه برنامه هم بپردازه.