Я создаю карточную игру Slap Jack, в которой есть 1 пользователь и 3 компьютера "игрока".Когда пользователь нажимает кнопку, чтобы перевернуть карту, компьютеры будут работать один за другим, а также переворачивать карту.
Я пытаюсь заставить компьютеры работать с задержкой между их запусками.У меня сейчас есть функция, которая имитирует переворот компьютеров, но задержка работает только для первого переворота, так как два других сразу после этого.Это код, над которым я работаю до сих пор:
foreach (var player in Players.Where(a => a.IsComputer()))
{
_player = player;
_dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
_dispatcherTimer.Tick += new EventHandler(OnTimedEvent);
_dispatcherTimer.Interval = new TimeSpan(0, 0, 2);
_dispatcherTimer.Start();
}
Где OntimedEvent - это функция, которая обрабатывает переворачивание компьютера, а также останавливает dispatcherTimer (который является глобальным полем), а _player - активный игрок.Как я уже сказал, это делает паузу для первой итерации цикла foreach, но не делает паузу для второй или третьей.Я также пытался использовать класс System.Timer, но это создавало второй поток и не работало так, как мне было нужно.Здесь я что-то не так делаю или есть лучший способ сделать это?
РЕДАКТИРОВАТЬ : Мне кажется, я понимаю, что DispatcherTimer неверен, так как он выполняет оставшийся код ниже цикла foreach, а затем ожидает истечения таймера.