Я хочу создать приложение для покера на C # / WPF.Проигрыватели CPU берут свою очередь, но когда приходит время действовать пользователю, у меня возникает проблема, потому что я хочу дождаться ввода данных от игрока, но мой цикл останавливает интерфейс.Код выглядит следующим образом:
public override async void TakeTurn()
{
await WaitForUserInput();
}
private async Task<int> WaitForUserInput()
{
await Task.Run((() => WaitForUserInput2()));
return 42;
}
private void WaitForUserInput2()
{
while (BetsFinished == false || Game.PlayersRound.Contains(this))
{
//Loop that gets broken by user interaction
}
}
Задание, которое я запускаю, будет прервано пользовательским вводом (нажатие кнопки установит BetsFinished в значение true), что невозможно, поскольку пользовательский интерфейс замораживается, как только вызывается TakeTurn,Код находится в классе Model, поэтому он не имеет прямой связи с View, если это имеет значение.Взаимодействие с пользователем может происходить через кнопку, привязанную к команде.
Метод TakeTurn () вызывается из моего класса покера, который определяет ход игры.
Я пробовал несколько установок(например, без ожидания перед WaitForUserInput ();), но без успеха.
Поэтому моя цель - позволить этому циклу работать без зависания пользовательского интерфейса.