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

سؤالين واضحين ومحددين عن الاحداث والمفوضات؟؟؟

مغلق
بدأه AbuMuhsen في 18 نوفمبر 2006 · 0 رد · 328 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1

أرجوكم المساعدة, انا طالب في السنة الخامسة واستشكل علي أمر في الاحداث, انا بحتث في المنتديات والمواقع والكتب قبل ان اراسلكم ولم اجد اجابة عن سؤالي...

أنا أحضر لمشروع التخرج في الكمبيوتر ومشروعي اكتبه بالسي شارب وهذا السؤال عطل علي كل العمل فأرجوكم المساعدة وجزاكم الله كل الخير...

قد أرفقت الكود كاملا ...

الاشكالين هما:

أولا هذا تصريح المفوض:

public delegate void MessageHandler(String messageText);

وهنا عندنا مفوض آخر:

pollTimer.Elaped += new ElapsedEvenHandler(CheckForMessage);

هذه الدالة CheckForMessage معرفة طبعا من نوع المفوض ولكن فيها سطر كود سببلي مشاكل في الدماغ والسطر هو:

MessageArrived("Hello World");

سؤالي الاول هو:

واضح من الكود اننا مررنا وسيط من نوع String الي الحدث MessageArrived ولكن المحير هو أين تم تخزين هذه السلسلة النصية؟؟؟؟ نحن دائما نستدعي اي دالة على الشكل :

String s =MessageArrived("Hello World");

وهنا واضح ان السلسلة مخزنة في الكائن s....

أليس هذا محيرا؟؟؟؟

سؤالي الثاني والاخير

لدينا الدالة Display على الشكل:

using System;

namespace Ch12Ex02

{

public class Display

{

public void DisplayMessage(string message)

{

Console.WriteLine("Message arrived: {0}", message);

}

}

وقد كتبنا في الصف الاساسي (main)

Connection myConnection = new Connection();

Display myDisplay = new Display();

myConnection.MessageArrived +=

new MessageHandler (myDisplay.DisplayMessage);

هنا العجيب اننا مررنا التابع MessageArrived دون تمرير اي سلسلة نصية معه ولكن من الواضح انا الدالة الموافقة تتوجب وجود كائن وسيط من نوع سلسلة نصية

ثم لاحظ في التابع اننا نطبع قيمة message وهذا والله سببلي عقدة كيف نريد ان نطبع قيمة هذا الكائن ونحن أصلا لم نمرر أي كائن؟؟؟؟؟؟؟؟ العجيب الغريب انه عند تشغيل البرنامج فأنه يطبع قيمة messge على أنها Hello World

اليكم البرنامج كله الأن :

using System;

using System.Timers;

namespace Ch12Ex02

{

public delegate void MessageHandler(string messageText);

public class Connection

{

public event MessageHandler MessageArrived;

private Timer pollTimer;

public Connection()

{

pollTimer = new Timer(1000);

pollTimer.Elapsed += new ElapsedEventHandler(CheckForMessage);

}

public void Connect()

{

pollTimer.Start();

}

public void Disconnect()

{

pollTimer.Stop();

}

private void CheckForMessage(object source, ElapsedEventArgs e)

{

Console.WriteLine("Checking for new messages...");

Random random = new Random();

if ((random.Next(9) == 0) && (MessageArrived != null))

{

MessageArrived("Hello Mum!");

}

}

}

}

using System;

namespace Ch12Ex02

{

public class Display

{

public void DisplayMessage(string message)

{

Console.WriteLine("Message arrived: {0}", message);

}

}

}

using System;

namespace Ch12Ex02

{

class Class1

{

static void Main(string[] args)

{

Connection myConnection = new Connection();

Display myDisplay = new Display();

myConnection.MessageArrived +=

new MessageHandler (myDisplay.DisplayMessage);

myConnection.Connect();

Console.ReadLine();

}

}

}

أرجو أن أكون قد أفصحت عما أريد علما انها مشاركتي الاولى ولكني قارئ قديم للموقع....

أحسن الله اليكم وجزاكم الله خيرا...

قال المعلم الامين صلوات ربي وسلامه عليه

" النجوم أمنة للسماء فإذا ذهبت النجوم أتى السماء ماتوعد, وأنا أمنة لأصحابي فإذا ذهبت أنا أتى أصحابي ما يوعدون و أصحابي أمنة لأمتي فإذا ذهب أصحابي أتى أمتي ما يوعدون" رواه مسلم

تأمل هذا الحديث العظيم

Ch12Ex02.rar

هذا الموضوع مغلق.

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

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

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

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

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