using System.Reactive.Linq;
private static event EventHandler TheEvent;
public static void Main()
var observable = Observable.FromEvent<EventHandler, EventArgs>(h => (s, e) => h(e), h => TheEvent += h, h => TheEvent -= h);
var subscriber = observable.Buffer(TimeSpan.FromMilliseconds(100))
.Subscribe(e => Console.WriteLine(String.Format("{0}: {1} elements received...", DateTime.Now.ToString("u"), e.Count)));
var random = new Random();
var timer = new System.Timers.Timer(200)
timer.Elapsed += (s, e) =>
var amount = random.Next(1, 10);
for (int i = 0; i < amount; ++i)
TheEvent.Invoke(null, null);