تحديث الواجهة قد يبطئ البرنامج . فهو بالحقيقة اعادة الرسم للمكون . وهذا يشمل اي تغيرات تتطلب تغيير في الشكل الظاهر للمكون . كتغيير لون او حتى اضافة عنصر في ListBox
في الحالة العادية اي تحديث او عملية رسم ستحدث في الثريد الرئيسي للطبيق وستكون خاضعة لترتيب الكود. هذا قد يحدث بطئ واحيانا ( في بعض المكونات ) تأجيل الرسم . مما يؤدي لتوهم المستخدم بان التطبيق قد علق او تجمد وانه توقف عن العمل. فكر بـ progressbar او log في Memo
لهذا من الافضل نقل اجراءات التحديث إلى ثريد اخر. يجب ان انوه إلى أن استخدام Synchronizations العملية مكلفة فلا تستخدمها إلا في حال الضرورة وعند الحاجة . واقصد بمكلفة انها تحتل ذاكرة اضافية وجهد اكثر من المعالج . فلا تغرق برنامجك بها
لا تنسى اضافة System.Threading إلى uses
TThread.CreateAnonymousThread(
procedure
begin
// ضع هنا ما تريد
...
TThread.Synchronize(nil,
procedure
begin
// هنا المكان المهم . الذي يجب ان يحتوي على اوامر تحديث المكونات
// يمكنك وضع هذه الاوامر في اجراء وطلبه هنا . هذا سيتيح لك التعامل مع
// المتغيرات من خارج هذا الثريد
end);
// ضع هنا ما تريد ايضا
...
end
).Start();