Latest web development tutorials

C # event (acara)

Acara (event) pada dasarnya mengatakan adalah tindakan pengguna, seperti tombol, klik, gerakan mouse, dll, atau muncul, seperti pemberitahuan sistem yang dihasilkan.Aplikasi perlu menanggapi suatu peristiwa ketika peristiwa itu terjadi. Misalnya, menyela. Peristiwa digunakan untuk komunikasi antar-proses.

Dengan menggunakan event delegasi

Dan acara ini dihasilkan dalam deklarasi kelas, dan dengan menggunakan kelas delegasi yang sama terkait dengan event atau kelas-kelas lain. Kelas berisi acara untuk acara penerbitan. Ini disebutpenerbit (publisher) kelas.Lainnya menerima jenis acara yang disebutfeed reader (subscriber) kelas.Peristiwa menggunakanmempublikasikan - (publisher-pelanggan) Model berlangganan.

Penerbit (publisher) dan berisi acara adalah delegasi didefinisikan objek.Kontak antara peristiwa dan delegasi juga didefinisikan dalam objek ini. objek penerbit (publisher) kelas panggilan acara ini, dan memberitahu objek lain.

perangkat pakan (pelanggan) adalah sebuah acara yang berlaku dan memberikan sebuah objek event handler.metode kelas di Publisher (penerbit) kelas delegasi doa feed reader (subscriber) (event handler).

Pernyataan Acara (Event)

Dalam hal dideklarasikan di dalam kelas, Anda harus terlebih dahulu mendeklarasikan tipe delegasi untuk acara tersebut. Sebagai contoh:

delegasi masyarakat (status string) batal BoilerLogHandler;

Kemudian, menyatakan acara itu sendiri, menggunakanevent kata kunci:

// Berdasarkan definisi di atas acara delegasi acara publik BoilerLogHandler BoilerEventLog;

Kode di atas mendefinisikan delegasi dan acara bernamaBoilerEventLogbernamaBoilerLogHandler,acara tersebut akan dihasilkan ketika delegasi dipanggil.

contoh 1

menggunakan System;
namespace SimpleEvent
{
   menggunakan System;

   public class EventTest
   {
      swasta nilai int;

      delegasi public void NumManipulationHandler ();

      acara publik NumManipulationHandler ChangeNum;

      void dilindungi maya OnNumChanged ()
      {
         jika (ChangeNum! = null)
         {
            ChangeNum ();
         }
         lain
         {
            Console.WriteLine ( "Event dipecat!");
         }

      }
      publik EventTest (int n)
      {
         SetValue (n);
      }
      public void SetValue (int n)
      {
         if (value! = n)
         {
            value = n;
            OnNumChanged ();
         }
      }
   }
   public class MainClass
   {
      public void static Main ()
      {
         EventTest e = baru EventTest (5);
         e.SetValue (7);
         e.SetValue (11);
         Console.ReadKey ();
      }
   }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Acara Dipecat!
Acara Dipecat!
Acara Dipecat!

contoh 2

Contoh ini menyediakan panas sistem boiler air sederhana untuk aplikasi pemecahan masalah. Ketika seorang insinyur pemeliharaan untuk memeriksa boiler, suhu boiler dan tekanan akan menjadi seperti catatan pemeliharaan insinyur otomatis direkam ke file log.

menggunakan System;
menggunakan System.IO;

BoilerEventAppl namespace
{

   // Boiler kelas kelas Boiler
   {
      private int suhu;
      int tekanan swasta;
      Boiler publik (int t, int p)
      {
         temp = t;
         Tekanan = p;
      }

      public int getTemp ()
      {
         kembali suhu;
      }
      public int getPressure ()
      {
         kembali tekanan;
      }
   }
   // Kegiatan kelas Penerbit DelegateBoilerEvent
   {
      delegasi masyarakat (status string) batal BoilerLogHandler;

      // Berdasarkan definisi di atas acara delegasi acara publik BoilerLogHandler BoilerEventLog;

      public void LogProcess ()
      {
         Pernyataan string = "O. K";
         Boiler b = Boiler baru (100, 12);
         int t = b.getTemp ();
         int p = b.getPressure ();
         jika (t> 150 || t <80 || p <12 || p> 15)
         {
            Pernyataan = "Perlu Pemeliharaan";
         }
         OnBoilerEventLog ( "Logging Info: \ n");
         OnBoilerEventLog ( "Suhu" + t + "\ nPressure:" + p);
         OnBoilerEventLog ( "\ nMessage:" + komentar);
      }

      void dilindungi OnBoilerEventLog (pesan string)
      {
         jika (BoilerEventLog! = null)
         {
            BoilerEventLog (pesan);
         }
      }
   }
   Syarat pemesanan seperti // ditulis ke file log kelas BoilerInfoLogger
   {
      FileStream fs;
      StreamWriter sw;
      publik BoilerInfoLogger (string filename)
      {
         fs = new FileStream (nama file, FileMode.Append, FileAccess.Write);
         sw = new StreamWriter (fs);
      }
      public void Logger (Info string)
      {
         sw.WriteLine (Info);
      }
      public void Tutup ()
      {
         sw.Close ();
         fs.Close ();
      }
   }
   // Langganan acara adalah masyarakat kelas RecordBoilerInfo
   {
      static void Logger (Info string)
      {
         Console.WriteLine (Info);
      } // End of Logger

      static void Main (string [] args)
      {
         BoilerInfoLogger filelog = BoilerInfoLogger baru ( "e: \\ boiler.txt");
         DelegateBoilerEvent boilerEvent = baru DelegateBoilerEvent ();
         boilerEvent.BoilerEventLog + = new 
         DelegateBoilerEvent.BoilerLogHandler (Logger);
         boilerEvent.BoilerEventLog + = new 
         DelegateBoilerEvent.BoilerLogHandler (filelog.Logger);
         boilerEvent.LogProcess ();
         Console.ReadLine ();
         filelog.Close ();
      } // Akhir utama

   } // End of RecordBoilerInfo
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Logging Info:

temperatur 100
tekanan 12

Pesan: O. K