繁体   English   中英

C#/ WPF如何在循环之间等待,但仍允许用户单击按钮(不需要)

[英]C#/WPF How to wait between loops but still allow user button click (not required)

我正在创建一个纸牌游戏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循环下面的剩余代码,然后等待计时器过去。

我可以通过使函数异步并使用await Task.Delay(2000);来解决此问题Task.Delay(2000); 完全不使用计时器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM