2009-10-08 19 views

risposta

7

chiedere ad ogni abbonato a parte, è necessario per accedere alla lista:

foreach (CancelEventHandler subHandler in handler.GetInvocationList()) 
{ 
    // treat individually 
} 

Quindi è possibile controllare a turno; altrimenti ottieni solo il voto finale.

+0

Proprio questo! Grazie – FerranB

+0

Non è un voto. (Mi rendo conto che era un giro di parole ma potrebbe essere interpretato male.) Se un sottoscrittore imposta Annulla su vero, allora è vero alla fine. Nessun sottoscrittore dovrebbe impostare Annulla su falso perché ciò sovrascriverebbe un utente precedente. –

6

Normalmente, nella maggior parte dei casi, la classe consente solo più abbonati, ma ognuno ottiene la stessa istanza di CancelEventArgs.

Se uno degli abbonati imposta Annulla su true, l'operazione verrà considerata annullata.

È possibile aggirare questo ottenendo l'elenco di invocazioni e inviando un evento a ciascun iscritto, ma di solito non è necessario.

+3

È molto semplice che gli abbonati usino il codice come e.Cancel = (condizione), quindi non si può supporre che tutti lo rispettino. – FerranB

Problemi correlati