Debounce (o rebote) para C#

¿Qué es Debounce? El debounce (o rebote) es una práctica de programación que se utiliza para garantizar que las tareas que consumen mucho tiempo no se activen con tanta frecuencia y que detenga el rendimiento de nuestra aplicación o sitio web. En palabras fáciles: Con Debounce establecemos un límite (de milisegundos) que debe transcurrir para poder ejecutar algo. Debouncer.cs Gist: https://bit.ly/debouncecs Ejemplo El objetivo de este ejemplo será crear dos páneles, en los cuales se llame a un método en el evento Mouse Move. En el primer panel, no usaremos Debounce, en el segundo sí. En ambos incrementaremos un contador en el mouse move, y lo mostraremos debajo de cada uno. 1. Creamos un nuevo proyecto 2. Renombramos nuestro form principal, y le agregamos dos páneles 3. Pintamos los páneles (opcional), y agregamos algunas label para mostrar los resultados 4. Instanciamos el debouncer, y lo agregamos al dispose del form. El dispose es utilizado para abortar el hilo que corre dentr