ايران ويج

نسخه‌ی کامل: Doevent چکار می کنه ؟
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
Doevent چکار می کنه ؟
دوست من سلام

Doevent در ويژوال بيسك وظيفه داره كه صف پيغام هاي يك پنجره رو خالي كنه كه برنامه شما قدرت پاسخ به رويداد هاي كاربر و ... رو داشته باشه ! :!:

بر فرض مثال يك برنامه اي داريم كه از يك حلقه استفاده ميكنه كه در اون حلقه يك پروسه گرافيكي در حاله انجامه ! قدرت زيادي از پردازنده و حافظه به اون پروسه اختصاص پيدا كرده و ميتونيم ببينيم كه سيستم عامل در طول انجام اون پروسه كند شده و تمام قدرت معطوف پروسه ما شده و به علتي كه سيستم عامل كاملا در حال پردازش امور پروسه ما با تقدم بيشتري هست فرصتي براي پردازش كليك هاي ماوس روي پنجره با تقدم كمتر وجود نداره و سيستم عامل همه اون پيغام ها رو در صف پيغام هاي پنجره منتظر نگه ميداره .
فرض كنيد كه ميخوايم يه كليد لغو عملياتي رو براي حلقه بزاريم اما چون رويداد هاي ماوس فرصتي براي پردازش پيدا نمي كنن ما قابليت لغو عمليات رو از دست ميديم يا اينكه عمل كليك كاربر تا لغو عمليات پروسه مدت زمان زيادي رو ميبره و ما نمي تونيم در زمان كوتاهي اون پروسه رو متوقف كنيم كه در بسياري از اوقات يك مشكل جدي تلقي ميشه !

حالا ما در انتهاي هر گردش حلقه يك دستور Doevent رو قرار ميديم . در اين حال در انتهاي هر حلقه پروسه صف پيغام ها خالي ميشن و پيغام هاي در حال انتظار نابود ميشن و فرصت براي ورود پيغام هاي بعدي ( مثل رويداد كليك بر روي دكمه لغو ) باز مي مونه ! در نتيجه برنامه ما مي تونه با كاربر و رويداد هاتي ماوس كاربر تا حد بسيار زيادي هماهنگ بشه و برنامه ما حالت هنگ به خودش نگيره !
نكته آخر اينكه چون VB از برنامه نويسي مدل Multithread پشتيباني نميكنه ما مجبوريم از اين طريق از بار اضافي بر سيستم عامل كم كنيم تا برنامه حالتي نرمال در زمان اجرا داشته باشه !

اميدوارم مفيد واقع بشه ! :wink: