Hendelser må responderes så snart som mulig av applikasjoner. Slik at avbrytelser, kommunikasjon mellom prosessen oppnås gjennom bruk av hendelser. Brukerhandlinger, for eksempel tastetrykk, klikk og musebevegelser som systemgenererte hendelser, er begge eksempler på brukerhandlinger. I C#er en hendelse en delegat som er innkapslet. Delegaten definerer metodeerklæringen til hendelsesbehandleren for klasseabonnent. I artikkelen vil vi spesifisere hendelsen som skjer i C# og også varsler de andre klassene om det, i tillegg til å diskutere hendelsesbehandleren i C#.
Hva er arrangement i C# i Ubuntu 20.04?
Delegater brukes til å definere hendelser i C#, som er en delmengde av delegater. En utgiver er pålagt å ta opp en hendelse i C#, og en abonnentklasse er også nødvendig for å motta og håndtere en begivenhet. Arrangementet er publisert ved hjelp av utgiverklassen. Abonnentklassen er en ekstra klasse som behandler slike hendelser. Et forlagssubscriber-paradigme brukes til hendelser i C#. Generelt er klassen som sender arrangementet kjent som forlagsklassen, og klassen som mottar arrangementet er kjent som abonnentklassen.
Syntaks for å erklære hendelsen i C# i Ubuntu 20.04
En funksjon eller metodes syntaks er viktig for programmering, og vi har enkel syntaks for hendelsesbehandlerfunksjonen er som følger:
Offentlig delegat Void DelegateHandler (); // delegat
Først må delegatens hendelsestype spesifiseres før arrangementet kan erklæres i klassen.
Public Event Void DelegateHandler EventHandler (); // begivenhet
Den foregående koden oppretter en "delegathandler" ved å bruke nøkkelordets delegat og en "EventHandler" -hendelse som kaller delegaten når den heves. Merk at bare i klassen der hendelsen ble erklært, kan brukes til å påkalle den.
Hvordan erklære hendelsene i C# i Ubuntu 20.04
For å forstå hvordan delegathendelsen og hendelsesbehandleren fungerer i C#, bør vi ha praktiske programmeringseksempler. Disse eksemplene er implementert i Ubuntu 20.04 ved å bruke en monokompilator for C#.
Eksempel 1: Program for bruk av delegater i C # i Ubuntu 20.04
Eksemplet er ganske enkelt å erklære delegaten og erklære også en delegatvariabel med hendelsesnøkkelordet. Vi har erklært en hendelse for følgende kode i utgiverklassen.
Vi har importert systembiblioteket til C# som "Bruke systemet" som hjelper oss å inkludere klasser og funksjoner som konsollklassen og WritLine -funksjonen. Navnområdet får navnet "MyApp" som identifiserer og innkapsler koden vår. Delegaten er her definert som "del" av typen streng og passerer "str" av streng som en parameter. Etter det er forlagsklassen opprettet som "EventExample". I forlagsklassen har vi erklært en delegat "del" og ved å bruke "begivenhet" -modifiserer, har vi erklært en hendelse for typen delegat "del".Deretter har vi kalt "EventExample" og opprettet et objekt "dette.Begivenhet".
Objektet initialiseres med delegaten “del” ved å bruke et nytt nøkkelord og passere et annet objekt “dette.Hellouser ”til det. Vi har kalt “Hellouser” som en strengtype som har gått med et nytt objekt “MyUser” som en parameter. Returerklæringen vil returnere verdien av MyUser sammen med strengen “Hello”. Void Main har påberopt forlagsklassen “EventExample” der vi har tildelt en verdi til “MyUser” i “OBJ. Begivenhet". “Obj. Hendelse ”er initialisert for" Resultat "-variabelen som vi har bestått i konsollen.WritLine -metoden for visning.
Utgangen fra utførelsen av programmet ovenfor vises på konsollskjermen.
Eksempel 2: Program for å konsumere en hendelse i C # i Ubuntu 20.04
Abonnentklassen må registrere seg for arrangementet og håndtere den med metoden hvis erklæring samsvarer med delegaten som vist i programmet nedenfor.
Arrangementet “MyProcessCompleted” abonnerer på klassen “MyProgram”. Den bruker operatøren “+=” for å registrere seg med arrangementet. Husk at vi kan legge til metoder til påkallingslisten over multicast -delegaten på samme måte. Arrangementet håndteres her av “P1_MyProcessCompleted ()” -metoden, som samsvarer med delegatet "Varsler" -type -erklæringen og konsollen. WritLine -metoden påberopes for å skrive ut den aktuelle meldingen. OnprocessCompleted () -metoden kalles på slutten av StartProcess () -metoden, som reiser en hendelse.
Deretter kalles hendelsesnavnet "OnprocessCompleted" og definert med den beskyttede virtuelle metoden. OnprocessCompleted () -metoden bruker prosessCompleted. Påkalle () for å ringe delegaten. Dette verifiserer først at hendelsen “MyProcessCompleted” ikke skal være null og deretter kaller delegaten “varsler”.
Ved utførelse av overheadkoden har vi utdataene trykt på skjermen vedlagt nedenfor.
Eksempel nr. 3: Program for bestått data i innebygd EventHandlerDelegate i C # i Ubuntu 20.04
Flertallet av hendelsene sender data til abonnentene sine. EventArgs -klassen fungerer som grunnlaget for alle dataklasser. For å overføre dataene til behandleren, bruker vi Eventhandler. Koden er illustrert nedenfor.
Her har vi en klasse som heter “EventHandlerProgram”. I klassen har vi en tomrom hovedfunksjon som kalles et objekt “EventHandlerProcess” som P1. Objektet initialiseres med det nye nøkkelordet og påberopes av EventHandlerProcess (). P1_processCompleted er registrert som en hendelse her ved å bruke operatøren “+=”. På slutten av Void Main blir også startprocess () -funksjonen påberopt for den onprocessCompletterte metoden som reiser en hendelse. Deretter har vi en hendelsesbehandler “P1_ProcessCompleted” der vi har passert et objekt som “kilde” og type BOOL som “ISSUCCESSED”.
ConsoleWriteline vil skrive ut den boolske uttalelsen. Klassen ”Eventhandler” er opprettet der vi har en innebygd Eventhandler for å erklære en hendelse. Vi har også påkalt startprosessmetoden som har en prøvefangstblokk for unntakshåndtering hvis det oppstår. "OnprocessCompleted" kalles med den beskyttede virtuelle metoden. I OnProcessCompleted () -funksjonen bruker vi Invoke () for å heve en hendelse, har vi spesifisert "dette" som en avsender og bool som "ISSUCCESSICE". Merk at håndtererne får en enkelt boolverdi som indikerer om prosessen lyktes eller mislyktes.
Utgangen fra samlingen av koden vises i bildet nedenfor.
Eksempel 4: Program for å erklære og heve hendelser i C # i Ubuntu 20.04
Følgende er et eksempel der vi må erklære og heve en hendelse i C# -programmeringsspråket som bruker kjernedelegatetypen.
I eksemplet ovenfor har vi en klasse "aritmetiske operasjoner" som en utgiverklasse der vi har utført den nødvendige funksjonaliteten som sjekker om den påkallende klassen abonnerte på arrangementet eller ikke. Delegaten erklært i forlagsklassen som en delegat, og arrangementet blir erklært som "myeVent". Void Add tar “X1” og “Y1” som parameterverdier. I tomrommet add-blokken har vi ringt en delegat gjennom IF-Else-setningen for å sjekke abonnementet. Arrangementet “MyEvent” er reist i IF-Else-setningen og skriver ut meldingen gjennom WritLine-metoden. Deretter har vi abonnentklassen som operasjoner med de nødvendige metodene. Vi brukte += operatøren i operasjonsklassen for å abonnere på "myeVent" -begivenheten og kåret til en behandler som "MyEventHandler" for å utføre passende operasjoner da en hendelse ble reist. Handlermetoden “MyEventHandler” i operasjonsklassen har samme implementering som i delegatmetoden “Delegat” i klassen “AritmeticOperations”.
Du kan se utgangen fra den grunnleggende aritmetiske operasjonen av hendelsesbehandler i C# nedenfor.
Konklusjon
Vi har dypt gått gjennom C# -hendelsen ved å diskutere hva hendelsene er i C# og den grunnleggende syntaksen vi implementerer i programmering. Vi har også utført eksemplet på hendelser og hendelsesbehandlere ved å vise hvordan du lager enkle hendelser, henter en hendelse og også abonnerer på en hendelse ved å vise utdataene deres på Ubuntu Terminal -skjermen. Dette er veldig grunnleggende eksempler som kan hjelpe deg å forstå tydelig.