Latest web development tutorials

C # evento (Event)

Event (evento) dice che è fondamentalmente un'azione dell'utente, come ad esempio i pulsanti, fare clic, il movimento del mouse, ecc, o qualche emergenti, come ad esempio le notifiche generate dal sistema.Applicazione deve rispondere a un evento quando si verifica l'evento. Ad esempio, l'interrupt. Gli eventi sono utilizzati per la comunicazione tra processi.

Utilizzando l'evento delegato

E l'evento viene generato nella dichiarazione della classe e utilizzando la stessa classe delegato associato al gestore di eventi o di altre classi. Classe contiene eventi per gli eventi editoriali. Questo è chiamatol'editore (editore) di classe.Altro Accetterei il tipo di evento viene chiamatolettore di feed (abbonato) di classe.Eventi che utilizzano lapubblicazione - modello di sottoscrizione (editore-sottoscrittore).

Editore (editore) e contiene l'evento è un delegato definito oggetti.Il contatto tra gli eventi e delegati sono anche definiti in questo oggetto. oggetto Editore (editore) classe chiama questo evento, e notifica di altri oggetti.

dispositivo di alimentazione (abbonato) è un evento accettato e di fornire un oggetto gestore di eventi.metodo di classe in Publisher (editore) classe delegato invocazione lettore di feed (abbonato) (il gestore di eventi).

Dichiarazione Event (evento)

Nel caso dichiarata all'interno della classe, è necessario innanzitutto dichiarare un tipo delegato per l'evento. Ad esempio:

Delegato pubblico (stato stringa) vuoto BoilerLogHandler;

Poi, dichiarare l'evento stesso, utilizzando la parola chiavedell'evento:

// In base alla definizione di cui sopra della manifestazione delegato evento pubblico BoilerLogHandler BoilerEventLog;

Il codice di cui sopra definisce un delegato e di un evento denominatoBoilerEventLognomeBoilerLogHandler,l'evento viene generato quando il delegato viene richiamato.

esempio 1

using System;
namespace SimpleEvent
{
   using System;

   public class EventTest
   {
      int value privato;

      delegato public void NumManipulationHandler ();

      evento pubblico NumManipulationHandler ChangeNum;

      vuoto virtuale protetto OnNumChanged ()
      {
         if (ChangeNum! = null)
         {
            ChangeNum ();
         }
         altro
         {
            Console.WriteLine ( "Evento sparato!");
         }

      }
      pubblico EventTest (int n)
      {
         SetValue (n);
      }
      SetValue public void (int n)
      {
         se (valore! = n)
         {
            value = n;
            OnNumChanged ();
         }
      }
   }
   public class MainClass
   {
      public static void Main ()
      {
         EventTest e = new EventTest (5);
         e.SetValue (7);
         e.SetValue (11);
         Console.ReadKey ();
      }
   }
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Event Fired!
Event Fired!
Event Fired!

esempio 2

Questo esempio fornisce un semplice sistema caldaia ad acqua calda per le applicazioni di risoluzione dei problemi. Quando un ingegnere di manutenzione per controllare la caldaia, la temperatura della caldaia e la pressione saranno come le note di manutenzione ingegnere registrati automaticamente in un file di log.

using System;
using System.IO;

BoilerEventAppl namespace
{

   // Caldaia Classe Classe caldaia
   {
      int Temp privato;
      pressione private int;
      Caldaia pubblico (int t, int p)
      {
         temp = t;
         pressione = p;
      }

      public int getTemp ()
      {
         tornare temperatura;
      }
      public int getPressure ()
      {
         ritorno della pressione;
      }
   }
   // Evento classe Editore DelegateBoilerEvent
   {
      Delegato pubblico (stato stringa) vuoto BoilerLogHandler;

      // In base alla definizione di cui sopra della manifestazione delegato evento pubblico BoilerLogHandler BoilerEventLog;

      LogProcess public void ()
      {
         Osservazioni String = "O. K";
         Caldaia b = nuova caldaia (100, 12);
         int t = b.getTemp ();
         int p = b.getPressure ();
         if (t> 150 || t <80 || p <12 || p> 15)
         {
            Osservazioni = "Hai bisogno di manutenzione";
         }
         OnBoilerEventLog ( "Accesso Info: \ n");
         OnBoilerEventLog ( "Temparature" + t + "\ nPressure:" + p);
         OnBoilerEventLog ( "\ nMessage:" + osservazioni);
      }

      protetto OnBoilerEventLog void (String message)
      {
         if (BoilerEventLog! = null)
         {
            BoilerEventLog (messaggio);
         }
      }
   }
   Condizioni tali riserve // ​​scritti alla classe BoilerInfoLogger file di log
   {
      fs FileStream;
      StreamWriter sw;
      pubblico BoilerInfoLogger (string filename)
      {
         fs = new FileStream (nome del file, FileMode.APPEND, FileAccess.Write);
         sw = new StreamWriter (FS);
      }
      Logger public void (info string)
      {
         sw.WriteLine (info);
      }
      vuoto Chiudere pubblico ()
      {
         sw.Close ();
         fs.Close ();
      }
   }
   // Abbonamento evento è public class RecordBoilerInfo
   {
      static Logger void (info string)
      {
         Console.WriteLine (info);
      } // End of Logger

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

   } // End of RecordBoilerInfo
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Registrazione informazioni:

Temperatura 100
Pressione 12

Messaggio: O. K