Diciamo che ho questo (incompleta) di classe, in cui alzo un evento senza prima di assegnarlo a una variabile per renderlo thread-safe:È sempre sicuro annullare l'iscrizione a un evento all'interno del gestore?
public class Test
{
public event EventHandler SomeEvent;
void OnSomeEvent(EventArgs e)
{
if (SomeEvent != null)
SomeEvent(this, e);
}
}
sarebbe sicuro per annullare la sottoscrizione di un gestore di eventi da stesso, o potrebbe esserci qualche problema simile a ciò che accadrebbe quando si rimuovono gli articoli da una raccolta mentre lo si enumera?
void SomeEventHandler(object sender, EventArgs e)
{
testInstance.SomeEvent -= SomeEventHandler;
}
cos'è un 'testinstance'? – Tigran
Presumibilmente è la stessa istanza di 'Test' come' sender'. – BoltClock
@Tigran Come ha detto BoltClock, è lo stesso di '(Test) sender' – Trisibo