Gli eventi sono davvero zucchero sintattico su un elenco di delegati. Quando invochi l'evento, questo sta davvero iterando su quell'elenco e invoca ciascun delegato con i parametri che hai passato.
Il problema con i thread è che potrebbero aggiungere o rimuovere elementi da questa raccolta sottoscrivendo/annullando l'iscrizione. Se lo fanno mentre stai iterando la raccolta ciò causerà problemi (penso che venga generata un'eccezione)
L'intento è quello di copiare l'elenco prima di iterarlo, in modo da essere protetto dalle modifiche alla lista.
Nota: Ora è possibile invocare l'ascoltatore anche dopo aver annullato l'iscrizione, pertanto è necessario accertarsi di gestirlo nel codice del listener.
fonte
2010-04-06 01:12:39
Leggendo le risposte provvisorie e qualificate qui ho la sensazione che la gestione degli eventi in C# sia strettamente accoppiata, soggetta a errori e non compresa molto bene. – micahhoover