C# 休眠 500 毫秒

标签 c# timer sleep

你能告诉我如何暂停我的程序 500 毫秒然后继续吗?

我读到 Thread.Sleep(500) 不好,因为它占用了 GUI 线程。

使用定时器触发回调 ...

我只想等待 500 毫秒,然后继续执行下一条语句。

请指教。

编辑:我需要显示状态栏消息 500 毫秒,然后用不同的消息更新消息。抱歉,我的意思是 500 不是 50。

编辑:我确实理解您所说的一切。但是: [我只想等待 500 毫秒,然后继续执行下一条语句。] 我认为因为间隔太短,我将在主 GUI 线程上执行 Thread.Sleep(500)。否则我将不得不重写大量代码来适应这个 500 毫秒的短暂间隔。

编辑:我会尝试重新格式化我的状态消息,这样就不需要暂停了。

最佳答案

Hmya,您尝试做的事情从根本上与 Windows 编程模型不兼容。 native Windows 程序是事件驱动的。您的程序总是处于空闲状态,处于由 Application.Run() 启动的循环中,等待 Windows 告诉它发生了一些有趣的事情,它应该响应。绘画请求、鼠标点击、计时器到期等等。

您的程序应该对此做出响应并过滤您感兴趣的内容。当您将按钮放在窗体上时,您总是对 Click 事件感兴趣,该事件在 Windows 发送 MouseDown 通知消息时生成。您的 Click 事件处理程序运行您编写的某种自定义代码。就像在您的案例中更新状态栏消息一样。

半秒后更新状态栏消息并没有什么意义。在这 500 毫秒内到底发生了什么改变了程序响应事件的方式?您可以调用 StatusBar 的 Update() 方法以便新消息可见,然后调用 System.Threading.Thread.Sleep(500) 以获得您想要的内容。你会摆脱它,Windows 提出的“无响应”幽灵会让你的程序死掉几秒钟。

但这并没有多大意义,在那半秒内什么也没发生,你的程序状态没有改变。它不能改变,它对 Windows 来说是死的,并且没有收到任何允许它改变状态的消息。

嗯,这就是我所能接受的。请更新您的问题并解释您为什么需要这样做。以防万一:如果您打算假装在半秒钟内做一些重要的事情,您的用户将不会留下深刻印象。她最终会注意到您的 UI 有半秒钟没有显示任何内容。

关于C# 休眠 500 毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2530950/

相关文章:

c# - 从通用存储库派生的类

c# - 如何防止 ToolStripComboBox 中的鼠标滚动?

html - KineticJS setText 方法像定时器一样更新

当我不主动使用计算机时,R 脚本停止运行

c# - 反射返回对象中的 SetValue 与目标类型不匹配

c - 以特定时间间隔执行函数

c - 多次重复后 POSIX 计时器失败

c - Windows 上的 Pthread - 未定义的 sleep 引用

android - 从 sleep 监听器中唤醒

c# - GPU 上的 OpenCV MatchTemplate