Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

withevents i array

[es] :: .NET :: withevents i array

[ Pregleda: 1883 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vujkev
Beograd

Član broj: 8072
Poruke: 1347
*.bg.wifi.vline.verat.net.



+104 Profil

icon withevents i array02.06.2006. u 14:44 - pre 217 meseci
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.
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: withevents i array02.06.2006. u 15:11 - pre 217 meseci
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.
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ć
 
Odgovor na temu

[es] :: .NET :: withevents i array

[ Pregleda: 1883 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.