c# - Thread.Sleep 或 Timer 用于显示每一步

标签 c# winforms timer thread-sleep

我正在制作游戏 wumpus world在 winforms 中,代理(计算机)可以在 4 个方向上移动。我正在使用按钮控件作为基础,并在需要的地方显示和隐藏图像。我为此使用了 Thread.Sleep,但问题是当我单击按钮时,表单上没有显示任何内容。后台进程运行良好,但未显示每个步骤。是的,我在当前 UI 线程中使用 Thread.Sleep
我想以2秒的间隔向用户展示每一步。

最佳答案

如果没有任何代码,很难回答,但据我所知,主要问题是你改变了世界的外观,然后告诉它 sleep ,女巫意味着什么都不会被绘制。然后当线程醒来时,您再次改变世界并使其休眠。什么都不会那样画。

更好的方法是使用计时器,将其设为单个计时器和需要显示的事件队列,您正在执行此操作。

你在 winForms 上工作吗,因为如果你在 WPF 上工作,你可以做更好的事情

编辑:我并不是说 Timer 是最好的方式,但它是一个很好的有效方式

关于c# - Thread.Sleep 或 Timer 用于显示每一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17773141/

相关文章:

javascript - 延迟启动 jQuery 旋转器,彼此相隔一秒

c# - 如何将自定义 IDesigner 移动到同一解决方案中的单独程序集?

c# - WinForms 复选框不响应加/减键 - 简单的解决方法?

c# - 为什么我的 System.Timers.Timer 事件没有在 C# 中触发

timer - CPU时钟频率因而QueryPerformanceCounter错误吗?

c# - 将多个 ComboBox 绑定(bind)到单个列表 - 问题 : When I select an item, 所有组合框更改

c# - 为什么这个运行时动态绑定(bind)会失败?

c# - 在 C# 中匹配两个大的字符串集

c# - Web 服务返回空白页而不是 JSON 对象

c# - 动态问卷