Use a AutoResetEvent instead of Thread.Sleep