Вы можете использовать таймер, как предлагает Хенк, но просто добавьте флаг, который сигнализирует о том, что метод все еще обрабатывает.
Итак, установите время задержки, скажем, 50 мс, и кодируйте обработчик событий следующим образом:
private void timer1_Tick(object sender, EventArgs e)
{
if ((this.WindowState == FormWindowState.Minimized) && !_isProcessing)
{
_isProcessing = true;
// Do stuff
_isProcessing = false;
}
}
где _isProcessing
- это частная логическая переменная в вашей форме.
Если вы ожидаете, что операции будут занимать менее 50 мс каждая, то каким-то образом агрегируйте операции (возможно, подойдет очередь).