Agiunta metodo statico a evento di oggetto

domenica 14 agosto 2011 - 19.53
Tag Elenco Tags  C#

andrestu Profilo | Expert

Ho un dubbio atroce e vorrei capire meglio il meccanismo:
ho una classe non statica con all'interno dichiarato un evento, ovviamente per essere utilizzata questa classe deve essere istanziata, creo dunque l'oggetto:

MIA_CLASSE oggetto1 = new MIA_CLASSE();

Quindi una volta istanziato l'oggetto aggiungo all'evento un metodo statico:

oggetto1.MIO_EVENTO += new EventHandler(METODO_STATICO);

a questo punto non riesco a capire bene cosa accade se istanzio diversi altri oggetti (oggetto1, oggetto2, oggetto3 ...) e faccio la stessa operazione, cioè aggiungo lo stesso metodo statico all'evento di ogni oggetto.
visto che è un metodo statico c'è una differenza nel modo in cui viene eseguito rispetto ad uno non statico?
Se all'interno di questo metodo c'è per esempio un stringa non statica (string MIA_STRINGA = "ciao") rimane differente per ogni oggetto o no?
Rimangono indipendenti le esecuzioni dello stesso metodo statico?






Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

u235 Profilo | Junior Member

ciao
tutti i metodi statici sono "thread-safe" se le uniche variabili che utilizza sono variabili locali o parametri. Se invece al suo interno manipoli in qualche modo qualche campo statico o comunque risorsa condivisa e accessibile da più fonti simultaneamente allora vi è il rischio di comportamenti anomali. Nel caso vi sia un unica "fonte" ad accedervi, il problema non si pone nemmeno nel secondo caso.

Almeno così dovrebbe essere per via del fatto che ogni richiesta ha il proprio stack di chiamate.

andrestu Profilo | Expert

grazie per la risposta,
la domanda era riferita ad un contesto aspnet webserver dove la stessa pagina (quindi parliamo dell'oggetto Page) viene richiamata da utenti diversi quindi avrò diversi oggetti page che utilizzano lo stesso metodo statico, a me interessa che le operazioni all'interno del metodo statico (cioè operazioni su membri interni non statici o parametri passati) non siano condivise altrimenti succede un pasticcio. Quindi anche in base a quello che dici te dovrei stare tranquillo...
Però rimango curioso sul meccanismo interno, e cioè se allo stesso tempo due o più oggetti page eseguono lo stesso metodo statico, tale metodo viene eseguito in parallelo (come se ciascun oggetto eseguisse un metodo interno non statico) oppure cè qualche meccanismo di "esecuzione in coda di attesa", e cioè il metodo viene eseguito in sequenza per ogni oggetto che lo richiama?


Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

u235 Profilo | Junior Member

dovrebbe essere più vicina la prima, ogni chiamata a un metodo statico, sarà una "copia" del metodo e delle sue variabili locali.

invoco però il beneficio del dubbio!

andrestu Profilo | Expert

E invece in termini di prestazioni (velocità di esecuzione) secondo te ci può essere differenza tra far usare un metodo statico oppure un metodo non statico interno all'oggetto stesso?
Sicuramente ce ne sarà in termini di occupazione di memoria...



Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

u235 Profilo | Junior Member

ciao, si, ma secondo me è trascurabile la differenza...
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5