Nella mia applicazione WPF, ho un gestore di eventi che viene chiamato l'evento MouseEnter del mio elemento dell'interfaccia utente:Throttle un gestore eventi
myUiElement.MouseEnter += myEventHandler
vorrei strozzare MyEventHandler in modo che non venga chiamato più di una volta al secondo. Come posso fare questo? Rx è l'approccio migliore solo per questo? Sto usando .NET 4.0 se fa la differenza.
Inoltre, ho bisogno di assicurarmi che l'evento MouseLeave venga sempre chiamato prima del successivo evento MouseEnter; devo gestirlo da solo? Oppure il framework è già stato progettato in modo che gli eventi MouseLeave vengano sempre chiamati prima del successivo evento MouseEnter? Cosa succede se ho codice asincrono in questi gestori di eventi?
In realtà non è necessario chiamarlo o è possibile eseguire un ritorno immediato nel metodo se l'ultima chiamata era troppo vicina all'ora corrente? – siride
Volevo limitarlo in modo che non appesantisca troppo il thread nel caso in cui l'utente sputi il mouse su tutto (ho molti elementi dell'interfaccia utente che avranno lo stesso gestore di eventi); ma suppongo di poterlo fare se è più efficiente di quanto effettivamente lo strozzi .. – Darius
qualsiasi meccanismo di limitazione alla fine coinvolgerà un'istruzione if e una scelta per continuare l'esecuzione o abortire. Non puoi davvero aggirarlo. – siride