private void PrioritizedCommand(Action Command)
{
++mainWindow.m_pendingTasks;
ThreadPool.QueueUserWorkItem(new WaitCallback(delegate
{
lock (queueLock)
{
double secondsSince = DateTime.Now.Subtract(m_lastCommand).TotalSeconds;
int timeout = CalculateTimeout();
if (secondsSince < timeout)
Thread.Sleep(TimeSpan.FromSeconds(timeout - secondsSince));
Command();
--mainWindow.m_pendingTasks;
}
}));
}