PDA

View Full Version : مشكل در form



mohsen_r
سه شنبه 01 بهمن 1387, 11:15 صبح
من يك مشكل دارم وقتي برنامه درحال اجراي كار خاصي هست مثلا خواندن اطلاعات از جدول و اضافه كردن به جدول ديگر اگر من كار ديگري در ويندوز انجام دهم مثلا my computer را اجرا كنم فرم من محتواي اون صفحه را مي گيرد وتا پايان كار برنامه اين حالت مي ماند چاره كار چيست؟

mossaferin
سه شنبه 01 بهمن 1387, 11:28 صبح
از application.ProcessMessages توی اون حلقه که کار میکنی ، استفاده کن

mohsen_r
سه شنبه 01 بهمن 1387, 12:01 عصر
تشكر فقط يه سوال با گذاشتن اين دستور در حلقه تاثيري در سرعت ندارد؟

vcldeveloper
سه شنبه 01 بهمن 1387, 16:49 عصر
يه سوال با گذاشتن اين دستور در حلقه تاثيري در سرعت ندارد؟
بستگی داره که برنامه شما در هنگام اجرای ProcessMessages چقدر پیام دریافت کرده باشه، و چه نوع وقفه هایی از نظر شما کند محسوب بشند؛ برای یکی حتی یک نانوثانیه هم خیلی زیاده، برای یکی هم چند ثانیه مشکلی ایجاد نمیکنه.
ProcessMessage بررسی میکنه که آیا برنامه شما پیام هایی از ویندوز دریافت کرده یا نه، اگر دریافت کرده بود، آن پیام ها را یکی یکی پردازش میکنه. یک برنامه در هر لحظه ممکن هست تعداد زیادی پیام دریافت کنه. یکی از مواردی که موجب ارسال پیام به برنامه میشه، همین قرار گرفتن یک پنجره روی پنجره برنامه هست. در این حالت ویندوز به برنامه اطلاع میده تا ظاهر پنجره را دوباره رسم کند. اگر این پیام پردازش نشه، برنامه یک حالت Freeze شده پیدا میکنه. اگر هم پیامی در صف پیام های وجود نداشته باشه، ProcessMessage کاری انجام نمیده.
در برنامه های عادی تاثیر ProcessMessage در سرعت پردازش نامحسوس هست.