realtebo
12-03-2008, 11:53
il mio progetto ha una classe che si chiama Partita
All'interno ho scritto queste due banali righe:
public delegate void EventoVuoto();
public event EventoVuoto GameStarted;
Nel momento in cui la classe viene usata, dopo certe cosine avviene il lancio dell'evento:
... bla bla bla ...
GameStarte();
... bla bla bla ...
Ora questa classe viene usata da una mia applicazione, da una form per la precisione che prima crea una istanza di Partita chiamandola Gioco e quindi procede ad agganciare l'evento così:
Gioco.GameStarted += new Partita.EventoVuoto(OnGameStarted);
Dove OnGameStarted è definita come metodo pubblico della mia form
public void OnGameStarted()
{
// Questo succede quando viene creata da nuovo la classe 'Partita'
// L'applicazione deve rispondere disabilitando i controlli per nuova partita
// e per le opzioni
mnuNuova.Enabled = false;
mnuSfidaAmici.Enabled = false;
mnuSfidaComputer.Enabled = false;
}
Il problema è che in realtà nel momento, a runtime, in cui l'esecuzione arriva al lancio dell'evento mi viene detto che è necessario usare new per creare una istanza.
Perchè? E di cosa? Sto di certo sbagliando approccio, ma ho trovato un esempio praticamente identico su un manuale e quello funziona. Su MSDN invece ti fan creare un oggetto Evento derivato, e poi il delegato avrà l'oggetto this ed anche l'evento. ma non è necessario, almeno così dice il manuale e difatti il SUO esempio funziona. Sigh.
All'interno ho scritto queste due banali righe:
public delegate void EventoVuoto();
public event EventoVuoto GameStarted;
Nel momento in cui la classe viene usata, dopo certe cosine avviene il lancio dell'evento:
... bla bla bla ...
GameStarte();
... bla bla bla ...
Ora questa classe viene usata da una mia applicazione, da una form per la precisione che prima crea una istanza di Partita chiamandola Gioco e quindi procede ad agganciare l'evento così:
Gioco.GameStarted += new Partita.EventoVuoto(OnGameStarted);
Dove OnGameStarted è definita come metodo pubblico della mia form
public void OnGameStarted()
{
// Questo succede quando viene creata da nuovo la classe 'Partita'
// L'applicazione deve rispondere disabilitando i controlli per nuova partita
// e per le opzioni
mnuNuova.Enabled = false;
mnuSfidaAmici.Enabled = false;
mnuSfidaComputer.Enabled = false;
}
Il problema è che in realtà nel momento, a runtime, in cui l'esecuzione arriva al lancio dell'evento mi viene detto che è necessario usare new per creare una istanza.
Perchè? E di cosa? Sto di certo sbagliando approccio, ma ho trovato un esempio praticamente identico su un manuale e quello funziona. Su MSDN invece ti fan creare un oggetto Evento derivato, e poi il delegato avrà l'oggetto this ed anche l'evento. ma non è necessario, almeno così dice il manuale e difatti il SUO esempio funziona. Sigh.