Il linguaggio Visual Basic di Microsoft
 

Generazione eventi in VB.Net

Antologiko 28 Nov 2015 19:10
Buonasera, nella mia classe ho dichiarato l'evento

Public Event ItemAdded(Item As ItemsType)

ed ho implementato il metodo

Public Function AddItem(...) As ItemsType

Il dubbio è: l'evento ItemAdded deve essere generato prima o dopo
che la funzione AddItem abbia restituito un valore al chiamante.

A me verrebbe da dire dopo, ma non ho idea di come fare!

Per ora ho scritto qualcosa del genere, ma ovviamente non va bene.

Public Function AddItem(...) As ItemsType
Dim NewItem As ItemsType

... crea l'oggetto ...

RaiseEvent ItemAdded(NewItem)
Return NewItem
End Function
Luca D 28 Nov 2015 19:31
On Saturday, November 28, 2015 at 7:10:31 PM UTC+1, Antologiko wrote:
> Buonasera, nella mia classe ho dichiarato l'evento
>
> Public Event ItemAdded(Item As ItemsType)
>
> ed ho implementato il metodo
>
> Public Function AddItem(...) As ItemsType
>
> Il dubbio è: l'evento ItemAdded deve essere generato prima o dopo
> che la funzione AddItem abbia restituito un valore al chiamante.

In senso stretto, *dopo* non puoi farlo, visto che il "return" esce dalla
funzione, quindi qualsiasi istruzione che lo segue viene ignorata.

Come l'hai scritta tu però mi pare OK, aspetti di aver fatto tutto e poi, come
ultime due istruzioni, inneschi l'evento e restituisci il valore... perchè dici
che non va bene?
Antologiko 28 Nov 2015 20:53
> perchè dici che non va bene?

La funzione fa parte di una libreria.
Se lascio le cose così, il programma chiamante che prova a creare un oggetto,
gestirebbe l'evento di creazione prima di aver ottenuto l'oggetto. O no?
Luca D 28 Nov 2015 23:27
On Saturday, November 28, 2015 at 8:53:34 PM UTC+1, Antologiko wrote:
>> perchè dici che non va bene?
>
> La funzione fa parte di una libreria.
> Se lascio le cose così, il programma chiamante che prova a creare un oggetto,
> gestirebbe l'evento di creazione prima di aver ottenuto l'oggetto. O no?

Teoricamente si, immediatamente prima, ma in ogni caso gli stai passando la
stessa identica istanza attraverso il parametro, quindi non dovrebbe essere un
problema per il tuo codice.

Anche perchè, se hai previsto di restituire l'oggetto sia tramite evento che
come risultato di funzione, immagino sia perchè prevedi di manipolare la cosa
in punti differenti (da una parte aggiungi, da un'altra vuoi essere notificato
della cosa)... nello stesso modulo/classe/form non avrebbe molto senso aspettare
il nuovo oggetto tramite evento quando già sai stai chiamando la funzione, che
te lo torna direttamente indietro.

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio Visual Basic di Microsoft | Tutti i gruppi | it.comp.lang.visual-basic | Notizie e discussioni visual basic | Visual basic Mobile | Servizio di consultazione news.