Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 1 odgovor
  • 2.332 pregleda

Najnovija ↓

withevents i array 02.06.2006. u 15:44 · pre 248 meseci #1
Pokušavam da napravim Client-Server aplikaciju pa me ineresuje da li je moguće koristiti WithEvents sa više od jedne instance klase. U VB6 znam da je to nemoguće, ali ne znam da li je .NET napredovao po tom pitanju.

Primer:
Na serveru svaka konekcija ima svoju instancu klase koja prima i šalje podatke jednom klientu. Hteo bi da server dobije event da je klient nešto poslao i sl.
Potpis
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
Re: withevents i array 02.06.2006. u 16:11 · pre 248 meseci #2
Ukratko, da.

Detaljnje, VB6 je imao to ogranicenje zbog nacina na koji Eventi funkcionisu u COM-u (dakle i u ActiveX-u). Svaki objekat koji publikuje evente je podrzavao singlecast Sink interfejs koji je consumer koristio da obavesti objekat o event-handleru. Multicast eventi su se pojavili tek kasnije kad je vec bilo kasno i VB6 ih ne podrzava direktno (bar dok sam ga ja koristio nije :)) te stoga nisi mogao da zakacis dva eventa za istu instancu.
WithEvents je cisto sluzio u VB6 da kaze "kompajleru" da taj objekat treba da podrzava Event sink i da sub/function imenovan instance_event predstavlja handler za event.


u VB.NET, WithEvents postoji radi kompatibilnosti koda i omogucava declarative events (preko Handles), tako da je vise Design-time stvar nego runtime :). Handleri se dodaju na event preko AddHandler i RemoveHandler komandi (i ne zahtevaju da instanca bude deklarisana sa WithEvents), ili preko "Handles" rezervisane reci nakacene na sub/function (Handles je samo instrukcija kompajleru da u konstruktore ubaci AddHandler komandu, iz nekog meni nepoznatog razloga zahteva da instanca bude deklarisana sa WithEvents iako za to nema neke realne potrebe, go figure). Nista te ne sprecava da iz dva razlicita objekta koji koriste istu "server" instancu u runtime-u nakacis dva razlicita handlera sa AddHandler posto su svi .NET eventi multicast po definiciji i mogu da pozivaju vise handlera.
Samo ne zaboravi da pozoves RemoveHandler kad zavrsis sa klijent objektom da ti objekat ne bi ostao "ziv" posto ce ostati "ziva instanca" u multicast eventu servera pa GC nikad nece pokupiti tvoj mrtvi objekat, cak moze i da obori aplikaciju ako tvoj klijent podrzava Disposable pattern i ti pozoves Dispose pre nego sto server ispali event.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme