الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تنفيذ اكثر من اجراء فى نفس الوقت

بدأه f2ij soft في 13 يوليو 2008 · 11 رد · 1,718 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اقوم بعمل برنامج هذا البرنامج به loop يستمر لفترة طويلة جدا

مما يجعل البعض يفتكر ان البرنامج (هنيج)

كان فى حل فى لغة الـVisual Basic 6.0

هو جملة DoEvents

#2

- لكي تجعل المستخدمين يفهموا ان البرنامج يعمل , يمكنك عرض رسالة في Label مثلاً :"جاري معالجة البيانات ..."

- لكي تقلل من الجهد وتزيد السرعة يمكنك استعمال Threads

اقتباس
If A is success in life, then A equals x plus y plus z. Work is x; y is play; and z is keeping your mouth shut

Albert Einstein

مدخل إلى برمجة وتصميم الألعاب : كيف أبدأ ؟

#3

انا بعرض ProgressBar

لكن المشكلة لما حد بينشط اى برنامج او الDesktopاو .... الخ

بيظهر البرنامج كانه هنيج ودى مشكلة

وانا كنت بحل المشكلة دى فى Vb بكود Doevents بوظعها فى اول الـloop

#5

السلام عليكم...

استعمل Application.ProcessMessages داخل الحلقات الطويلة:

  1.  
  2. for I := 0 to 100000 do begin
  3. // Some Code Here ...
  4. Application.ProcessMessages;
  5. end;
  6.  

حيث يسمح ذلك للتطبيق بمعالجة الرسائل القادمة من النظام.

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#6

اضافة تجريبية

ممكن تعمل Sleepi بعد كل فترة علشان البرنامج يستقر جرب بس

  1.  
  2. sleep(500);
  3.  

بالتوفيق

Comming Soon

#7

السلام عليكم

انصح بستخدام

Application.ProcessMessages;

شكرا

#8

السلام عليكم

استعمال Threads للإجراءات الطويلة أو التي لا تحتاج إلى ظهور النتائج أنيا في الواجهة

استعمال Application.ProcessMessages للعمليات التي تحتاج لظهور النتائج أنيا في الواجهة

لمعرفة الفرق: Threads يعمل بشكل متوازي مع البرنامج (بالنسبة للمستعمل العادي) وهو يقلص وقت التنفيذ، لذلك نستعمله للحسابات و/او للعميات التي لا تـُعرف وقت انتهائها بينما نوفر الوقت و الموارد للعمل مع البرنامج (مثل عمليات التحميل بينما البرنامج نستعمله لأغراض أخرى مثل متصفح أنترنت).

Application.ProcessMessages : نستعمله في حال نعمل مع البرنامج و الإجراء قيد التنفيذ لكن إما العملية طويلة أو غير معلومة وقت الإنتهاء (مثل عملية البحث) لذلك هو أفضل لرؤية النتائج أول بأول (هنا العمليات غير متوازية و إنما البرنامج مشغول بالإجراء الحالي)

:)

#9

مشكلة Application.ProcessMessages أنها ستأخذ كل وقت CPU .

Igonrance is HeLL,need to say any more?

Laziness is HeLL, Lazy programmers must be shoot on the head

Stupidity is HeLL, u can patch everything but not human stupidity

#10
SaD jAckAl كتب:
مشكلة Application.ProcessMessages أنها ستأخذ كل وقت CPU .

هي تأخذ وقت كبير من ال CPU ولكن ليس كله, جرب التالي

procedure TForm1.Button1Click(Sender: TObject);
var
  I : Integer;
begin
  ProgressBar1.Max := 1000000;
  ProgressBar1.Step := 1;
  for I := 0 to 1000000 do
  begin
	ProgressBar1.StepIt;
	Application.ProcessMessages;
  end;

end;

يعني استخدام ProcessMessages سوف يأخذ نفس استخدام ال Thread من المعالج.

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#12

ممكن تساعدك هذه الروابط

/index.php?showtopic=60869

/index.ph...9&hl=thread

/index.ph...7&hl=thread

هذا كتاب يشرح ال threads

/index.ph...st&id=26601

مهذا رابط الامثلة

/index.ph...st&id=26602

تم تعديل هذه المشاركة بواسطة BLOODYSTORM في 28 أغسطس 2008 في 18:43

BLooDY - StOrM

4c9osp1.jpg

أشهد ان لا اله الا الله واشهد ان محمد رسول الله

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…