anubis_ir
چهارشنبه 12 بهمن 1384, 13:07 عصر
سلام
در یک برنامه که از کلاس Tthread در آن استفاده میشود اگر به صورت فایل exe معمولی اجرا شود هیچ مشکلی وجود ندارد و دقیقا تابع Synchronize جهت به روز آوری رابط کاربر در روال Execute آن کار می کند.
اما اگر این کد درون یک dll قرار گیرد دیگر تابع Synchronize کار نمی کند! چرا؟
اگر تابع Synchronize را حذف کنم dll به خوبی کار میکند ولی بسیار ناپایدار خواهد بود و سبب هنگ برنامه پس از مدتی می شود. (البته بورلند هم توصیه کرده که حتما به روز آوری رابط کاربر بدلیل thread safe نبودن کامپوننتهای VCL باید به همراه Synchronize باشد. اما درون یک dll به چه صورت است؟ و چرا کار نمی کند؟)
با تشکر
در یک برنامه که از کلاس Tthread در آن استفاده میشود اگر به صورت فایل exe معمولی اجرا شود هیچ مشکلی وجود ندارد و دقیقا تابع Synchronize جهت به روز آوری رابط کاربر در روال Execute آن کار می کند.
اما اگر این کد درون یک dll قرار گیرد دیگر تابع Synchronize کار نمی کند! چرا؟
اگر تابع Synchronize را حذف کنم dll به خوبی کار میکند ولی بسیار ناپایدار خواهد بود و سبب هنگ برنامه پس از مدتی می شود. (البته بورلند هم توصیه کرده که حتما به روز آوری رابط کاربر بدلیل thread safe نبودن کامپوننتهای VCL باید به همراه Synchronize باشد. اما درون یک dll به چه صورت است؟ و چرا کار نمی کند؟)
با تشکر