using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ResourceViewer { /// /// Class to allow any action to be delayed Elapsed seconds /// Currently used with the filter list textbox typing /// public class Moderator { private DateTime _lastUpdate; private bool _isAlive; public void Trigger() { _lastUpdate = DateTime.Now; if (!_isAlive) { _isAlive = true; ThreadPool.QueueUserWorkItem(WaitAndTrigger); } } private void WaitAndTrigger(object ignored) { while (DateTime.Now < _lastUpdate.AddSeconds(ElapsedTime)) { Thread.Sleep(500); } _isAlive = false; var done = Done; if (done != null) { done(this, EventArgs.Empty); } } public event EventHandler Done; public int ElapsedTime = 2; } }