Ho un piccolo problema. Sto scrivendo un sistema di caricamento e caching delle risorse, in cui l'utente può richiedere una risorsa e impostare un callback da chiamare quando la risorsa viene caricata (e / o attendere che il carico finisca). Questo porta a codice come questo:
var waitobj=Loader.RequestObject("foo");
waitobj.LoadFinished+=delegate{ Bar(); };
Tuttavia, poiché le risorse sono memorizzate nella cache, la chiamata a RequestObject
potrebbe effettivamente essere completata in modo sincrono. Ciò significa che quando viene impostata la richiamata, la richiesta è già terminata e la richiamata non viene mai chiamata.
Ho pensato a un trucco intelligente: controlliamo semplicemente lo stato della richiesta nell'evento stesso dell'adder!
public event LoadFinishedHandler LoadFinished {
add {
if(Finished)
value();
else
m_LoadFinished+=value;
}
}
Questo chiamerà la funzione di callback non importa cosa .. ma i miei colleghi hanno detto che questo metodo è troppo complicato e nessuno sarà in grado di mantenere questo codice. Mi piace comunque questo trucco, ma ovviamente sono di parte.
Che cosa pensi, questo trucco è troppo intelligente per il suo bene?