public void Can_run_in_background() { const int ticks = 3; var block = new ManualResetEvent(false); RegisterMetrics(); ThreadPool.QueueUserWorkItem( s => { var reporter = new ConsoleReporter(); reporter.Start(3, TimeUnit.Seconds); while(true) { Thread.Sleep(1000); var runs = reporter.Runs; if (runs == ticks) { block.Set(); } } } ); block.WaitOne(TimeSpan.FromSeconds(5)); }
public void Can_stop() { var block = new ManualResetEvent(false); RegisterMetrics(); ThreadPool.QueueUserWorkItem( s => { var reporter = new ConsoleReporter(); reporter.Start(1, TimeUnit.Seconds); reporter.Stopped += delegate { block.Set(); }; Thread.Sleep(2000); reporter.Stop(); }); block.WaitOne(); }