JD2022-TU1/main/tools/apps/ResourceViewer/Moderator.cs

47 lines
1.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace ResourceViewer
{
/// <summary>
/// Class to allow any action to be delayed Elapsed seconds
/// Currently used with the filter list textbox typing
/// </summary>
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;
}
}