orion188
جمعه 13 شهریور 1383, 14:04 عصر
سلام
من برنامه ای دارم که نمیخوام توش فرمی نمایش داده بشه. میخوام پشت صحنه در حال اجرا باشه. البته فرم اصلی داره و از رویدادهای کنترلهای متعلق به اون هم استفاده میکنم، اما صرفا" نمایشش نمیدم. این کار رو به این صورت انجام دادم که توی سورس خود پروژه (در تابع WinMain) ، دستور Application->Run() رو غیر فعال کردم و خودم به جای اون یک حلقه قرار دادم:
while(1)
{
Application->ProcessMessages();
}
یا این یکی :
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
حالا تنها مشکل اینه که وقتی توی TaskManager نگاه میکنم ، حدود 80 درصد CPU رو به خودش اختصاص داده.
1- راهی برای حل این مشکل وجود داره؟
2- اساسا" وقتی یه برنامه اجرا میشه ، چطور چنین کاری صورت میگیره؟ یعنی فرمها چطور منتظر رویدادها میمونن؟ من نمیتونم چنین کاری رو انجام بدم؟
3- راه بهتری برای این کار وجود داره؟ که برنامه فرم نداشته باشه؟ و در عین حال اجرا بشه (مثلا" Thread , ... کاربرد ندارن اینجا؟)
ممنون
من برنامه ای دارم که نمیخوام توش فرمی نمایش داده بشه. میخوام پشت صحنه در حال اجرا باشه. البته فرم اصلی داره و از رویدادهای کنترلهای متعلق به اون هم استفاده میکنم، اما صرفا" نمایشش نمیدم. این کار رو به این صورت انجام دادم که توی سورس خود پروژه (در تابع WinMain) ، دستور Application->Run() رو غیر فعال کردم و خودم به جای اون یک حلقه قرار دادم:
while(1)
{
Application->ProcessMessages();
}
یا این یکی :
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
حالا تنها مشکل اینه که وقتی توی TaskManager نگاه میکنم ، حدود 80 درصد CPU رو به خودش اختصاص داده.
1- راهی برای حل این مشکل وجود داره؟
2- اساسا" وقتی یه برنامه اجرا میشه ، چطور چنین کاری صورت میگیره؟ یعنی فرمها چطور منتظر رویدادها میمونن؟ من نمیتونم چنین کاری رو انجام بدم؟
3- راه بهتری برای این کار وجود داره؟ که برنامه فرم نداشته باشه؟ و در عین حال اجرا بشه (مثلا" Thread , ... کاربرد ندارن اینجا؟)
ممنون