ورود

View Full Version : چرا فرم هنگام اجرای پردازش سنگین هنگ میکند (راه حل) ؟



همراه
پنج شنبه 07 آبان 1383, 10:03 صبح
چرا فرم هنگام اجرای پردازش سنگین هنگ میکند (راه حل) ؟
زمانیکه مثلا یک پروگرسبار را بر روی فرم تنظیم می کنیم و پس از هر پردازش سنگین مانند وجود چند تایمر پروگرسبار پیشرفت می کند فرم نیمه هنگ شده و مانند حالت کمبود حافظه کند نمایش داده می شود . چه راهی را پیشنهاد می کنید.

مهدی کرامتی
پنج شنبه 07 آبان 1383, 13:53 عصر
در بین دستورات تان در حلقه ای که پردازش فوق را انجام میدهد دستور Application.ProcessMessages را اضافه کنید.

Mahdi_S_T
پنج شنبه 07 آبان 1383, 17:49 عصر
احتمال این هم وجود دارد که تعداد فرم های شما زیاد باشد و شما آنها را بصورت استاتیک تعریف کرده باشید که در نتیجه در هنگام اجرا حافظه کم شده و برنامه هنگ می کند

MiRHaDi
پنج شنبه 07 آبان 1383, 23:13 عصر
سلام
هنگ نمیکند !‌Freez میشود
اگر پردازش SQL باشد کاری نمیتونی بکنی !
اگه Indy باشد باید کامپننت مربوطه رو بذاری رو فرم
اگه برنامه معمولیه ! وسط حلقت یا از ProccessMessage استفاده کن یا از ProgressBar.Repaint
قربانت
بای

omid_hasanpur
یک شنبه 10 آبان 1383, 07:23 صبح
با سلام
فکر کنم یه کار دیگه هم بتونی انجام بدی :
برای هر کدام از پردازشهای سنگینی که در برنامه خود داری یک Threadتعریف کن احتمالا مشکلت حل می شه.
Bye :sunglass:

omid_hasanpur
یک شنبه 10 آبان 1383, 07:29 صبح
راستی یادم رفت بگم اگه شما یک پردازش SQL را هم در قالب Threadانجام دهید مشکل Freezپیش نمی آید. :kaf:

همراه
دوشنبه 25 آبان 1383, 13:52 عصر
با سلام.
آقای omid_hasanpur ضمن تشکر از پاسخ خوب شما لطفا بفرمایید ساخت thread چگونه است.
متشکرم. http://www.khouzestandaily.com

مهدی کرامتی
دوشنبه 25 آبان 1383, 17:23 عصر
کلمه کلیدی Thread را در بخش جستجوی سایت وارد کنید.

omid_hasanpur
سه شنبه 26 آبان 1383, 07:32 صبح
وقتی برنامه شما در دلفی باز است به منوی فایل رفته و از newگزینه Thred object را انتخاب کنید.
واحد جدیدی به برنامه شما اضافه می شود که شما باید عملیاتی که قصد انجام دادن آنرا دارید در رویه Execute وارد کنید.
در ادامه این واحد را به فرم برنامه خود اضافه کنید و جایی که قصد اجرای آنرا دارید یک متغیر از نوع تریدی که ساخته اید تعریف کنید (مثلا newThread) و به این صورت آنرا اجرا کنید:

newThread:=TTestThread.create(False);
Bye :موفق:

همراه
سه شنبه 26 آبان 1383, 08:20 صبح
با سلام
آقای omid_hasanpur و DelphiAssistant از پاسخگویی سریع شما بسیار متشکرم. لطفا در مورد نحوه upload کردن تصاویر توسط client در یک فرم ورود اطلاعات بنده را راهنمایی بفرمایید.
گر چنین جلوه کند مغبچه باده فروش خاکروب در میخانه کنم مژگان را

همراه
سه شنبه 26 آبان 1383, 08:31 صبح
آقای omid_hasanpur در Execute چه نوع کدهایی می توان نوشت. لطفا بیشتر توضیح دهید.متشکرم