مافائدة استعمال هدا الاجراء Synchronize() ؟؟
#1
السلام عليكم ورحمة الله وبركاته

بعدا مشاهدتي لموضوع thread الدي وضعه الاخ TF6M راودني سؤال ؟

مثلا قمنا بانشاء thraed كما يلي :

PHP كود :
TMyThread = Class(TThread)
    Private
       
Procedure showinfo;
    Protected
       
Procedure Execute; override;
end;

initialization

   Procedure TMyThread
.showinfo;
      
Begin
         Memo1
.Lines.Add('Hello Delphi4arabe');
      
end;
      
    
Procedure TMyThread.Execute;
      
Begin
         
while not Terminated do
            
begin
               Synchronize
(showinfo);
            
end;
      
end;
      
end. 

السؤال : ما فائدة هاته التعليمة
PHP كود :
Synchronize(showinfo); 


بالتوفيق للجميع

في امان الله
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#2
وعليكم السلام ورحمة الله وبركاته
إقتباس :السؤال : ما فائدة هاته التعليمة
القيام بتنفيذ الإجراء showinfo
لماذا لم تكتب أوامر الإجراء مباشرة؟
لأنه لا ينبغي لـ Thread أن يقوم بالتغيير على المكونات مباشرة. لاحظ:
كود :
[color=Blue]Memo1[/color].Lines.Add('Hello Delphi4arabe');
الرد
#3
بارك الله فيك

إقتباس :لأنه لا ينبغي لـ thread أن يقوم بالتغيير على المكونات مباشرة

المكونات فقط ام المتغيرات العامة ايضا وهل هناك شيء اخر ؟

شكرا جزيلا على التواصل

في امان الله
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد
#4
السلام عليكم
1- Synchronize , أي اللمزامنة في تنفيذ الإجراء أتناء تنفيذ تعليمات
إجراء الـ Execute

2- "
المكونات فقط ام المتغيرات العامة ايضا وهل هناك شيء اخر ؟" , هنا حسب طريقتك
يجب حماية المتغيارت العامة أو التغير في VCL (إتباع طريقة منطقية & Wait functions & Critical Section Objects ......)ا.
3- الفكرة بسيطة , عليك بمزامنة تنفيذ الـ Methods , لتجنب التداخل (crash) & (block) ا.

[صورة: shown.gif]
a/b/c/d , تعليمات التي تنفذ في الـ Execute .
السهم الأزرق سير تنفيد الإجراء (زمنيا) .
المجالات الخضراء زمن تنفيد كل تعليمة و تختلف من واحدة الى أخرى (مقارنة / قفز / منطقية ...)
تتيح لنا
Synchronize أن نزامن تنفيد الإجراء S (تعليمة أو أكثر) , داخل طور تنفيد Execute .

بالتوفيق,,
I'M Fly Like A G6

الرد
#5
الحمد لله بدأ الامر يتضح

بارك الله فيك اخي tf6m لقد اسعدتني كثيرا

الله ينورك

سلامي وحبي لك اخي

في امان الله
كن متواضعا ولا تكن متكبرا // الصبر + المثابرة = النجاح
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم