Latest web development tutorials

C # الحدث (حدث)

الحدث (الحدث) ويقول في الأساس هو عمل المستخدم، مثل الأزرار، انقر فوق، حركة الماوس، وما إلى ذلك، أو بعض الناشئة، مثل الإخطارات قبل النظام.يحتاج تطبيق للرد على الحدث عند وقوع الحدث. على سبيل المثال، المقاطعة. وتستخدم الأحداث للاتصال بين العمليات.

باستخدام الحدث مندوب

ويتم إنشاء الحدث في تعريف فئة، وباستخدام نفس الفئة مندوب المرتبطة معالج الحدث أو الفئات الأخرى. وتتضمن فئة الحدث للأحداث النشر. وهذاما يسمى الناشر (ناشر)فئة. استعرض الآخر يسمى نوع الحدثقارئ موجز (المشترك) فئة.الأحداث باستخدامنشر - (ناشر المشترك) نموذج الاشتراك.

الناشر (ناشر) ويحتوي على الحدث هو مفوض تعريف الكائنات.يتم تعريف الاتصال بين الأحداث والمندوبين أيضا في هذا الكائن. يدعو الكائن الناشر (ناشر) فئة هذا الحدث، وبإعلام غيرها من الأشياء.

جهاز تغذية (المشترك) هو حدث مقبولة وتوفير كائن معالج الحدث.في الناشر (ناشر) فئة مندوب الاحتجاج تغذية القارئ (المشترك) أسلوب فئة (معالج الأحداث).

بيان الحدث (حدث)

في حال أعلن داخل الصف، يجب أولا تعريف نوع مندوب لهذا الحدث. على سبيل المثال:

مندوب العام (وضع سلسلة) باطلة BoilerLogHandler.

ثم، أن يعلن الحدث نفسه، وذلك باستخدام الكلمةالحدث:

// بناء على التعريف السابق للحدث عام مندوب الحدث BoilerLogHandler BoilerEventLog.

يحدد رمز أعلاه مندوب وحدث مسمىBoilerEventLogاسمهBoilerLogHandler،سيتم إنشاء الحدث عندما يتم استدعاء مندوب.

مثال 1

باستخدام نظام.
مساحة SimpleEvent
{
   باستخدام نظام.

   الطبقة العامة EventTest
   {
      قيمة كثافة العمليات الخاصة؛

      مندوب العام الفراغ NumManipulationHandler ()؛

      حدث عام NumManipulationHandler ChangeNum.

      OnNumChanged الفراغ الظاهري المحمية ()
      {
         إذا (ChangeNum! = فارغة)
         {
            ChangeNum ()؛
         }
         آخر
         {
            Console.WriteLine ( "حدث اطلق!")؛
         }

      }
      الجمهور EventTest (كثافة العمليات ن)
      {
         SetValue (ن)؛
      }
      SetValue باطلة العامة (الباحث ن)
      {
         إذا (القيمة! = ن)
         {
            القيمة = ن.
            OnNumChanged ()؛
         }
      }
   }
   الطبقة العامة MainClass
   {
      الفراغ ثابت العامة الرئيسية ()
      {
         EventTest ه = EventTest الجديدة (5)؛
         e.SetValue (7)؛
         e.SetValue (11)؛
         Console.ReadKey ()؛
      }
   }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

الحدث مطرود!
الحدث مطرود!
الحدث مطرود!

مثال 2

يوفر هذا المثال الساخن نظام غلاية الماء بسيط لتطبيقات استكشاف الأخطاء وإصلاحها. عندما مهندس صيانة للتحقق من المرجل، ودرجة حرارة المرجل والضغط سيكون على شكل ملاحظات لمهندسي صيانة تسجيلها تلقائيا إلى ملف السجل.

باستخدام نظام.
باستخدام System.IO.

BoilerEventAppl مساحة
{

   // المرجل فئة فئة المرجل
   {
      درجة الحرارة كثافة العمليات الخاصة؛
      ضغط كثافة الخاص؛
      المرجل العامة (الباحث ر، الباحث ع)
      {
         درجة الحرارة = ر؛
         الضغط = ع؛
      }

      getTemp كثافة الجمهور ()
      {
         العودة مؤقت.
      }
      getPressure كثافة العمليات العامة ()
      {
         العودة الضغط؛
      }
   }
   // حدث الطبقة الناشر DelegateBoilerEvent
   {
      مندوب العام (وضع سلسلة) باطلة BoilerLogHandler.

      // بناء على التعريف السابق للحدث عام مندوب الحدث BoilerLogHandler BoilerEventLog.

      LogProcess الفراغ الجمهور ()
      {
         تصريحات سلسلة = "O. K".
         المرجل ب = المرجل الجديدة (100، 12)؛
         الباحث ر = b.getTemp ()؛
         الباحث ع = b.getPressure ()؛
         إذا (ر> 150 || ر <80 || ص <12 || P> 15)
         {
            تصريحات = "بحاجة الى صيانة".
         }
         OnBoilerEventLog ( "تسجيل معلومات: \ ن")؛
         OnBoilerEventLog ( "تيمباراتوري" + ر + "\ nPressure:" + ص)؛
         OnBoilerEventLog ( "\ nMessage:" + تصريحات)؛
      }

      محمية OnBoilerEventLog الفراغ (رسالة سلسلة)
      {
         إذا (BoilerEventLog! = فارغة)
         {
            BoilerEventLog (رسالة)؛
         }
      }
   }
   شروط هذه التحفظات // مكتوبة إلى فئة BoilerInfoLogger ملف السجل
   {
      خ يقوم FileStream.
      StreamWriter جنوب غرب.
      الجمهور BoilerInfoLogger (سلسلة اسم الملف)
      {
         خ = يقوم FileStream جديدة (اسم الملف، FileMode.Append، FileAccess.Write)؛
         جنوب غرب = StreamWriter جديد (خ م)؛
      }
      المسجل باطلة العامة (معلومات سلسلة)
      {
         sw.WriteLine (مزيد من التفاصيل).
      }
      إغلاق باطلة العامة ()
      {
         sw.Close ()؛
         fs.Close ()؛
      }
   }
   // الاشتراك حدث هو الطبقة العامة RecordBoilerInfo
   {
      ثابت المسجل باطل (معلومات سلسلة)
      {
         Console.WriteLine (مزيد من التفاصيل).
      } // نهاية المسجل

      ساكنة باطلة الرئيسية (سلسلة [] وسائط)
      {
         BoilerInfoLogger filelog = BoilerInfoLogger الجديدة ( "ه: \\ boiler.txt")؛
         DelegateBoilerEvent boilerEvent = DelegateBoilerEvent الجديدة ()؛
         boilerEvent.BoilerEventLog + = جديد 
         DelegateBoilerEvent.BoilerLogHandler (المسجل)؛
         boilerEvent.BoilerEventLog + = جديد 
         DelegateBoilerEvent.BoilerLogHandler (filelog.Logger)؛
         boilerEvent.LogProcess ()؛
         Console.ReadLine ()؛
         filelog.Close ()؛
      } // نهاية الرئيسية

   } // نهاية RecordBoilerInfo
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

تسجيل المعلومات:

درجة حرارة 100
ضغط 12

رسالة: O. K